SQLite Agrupar por

Resumo : neste tutorial, você aprenderá como usar GROUP BYa cláusula SQLite para criar um conjunto de linhas de resumo a partir de um conjunto de linhas.

GROUP BYIntrodução à cláusula SQLite

A GROUP BYcláusula é uma cláusula opcional da SELECTdeclaração. A GROUP BYcláusula agrupa um grupo selecionado de linhas em linhas de resumo por valores de uma ou mais colunas.

A GROUP BYcláusula retorna uma linha para cada grupo. Para cada grupo, você pode aplicar uma função agregada como MIN, MAX, SUM, COUNTou AVGpara fornecer mais informações sobre cada grupo.

A instrução a seguir ilustra a sintaxe da GROUP BYcláusula SQLite.

SELECT 
    column_1,
    aggregate_function(column_2) 
FROM 
    table
GROUP BY 
    column_1,
    column_2;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

A GROUP BYcláusula vem após a FROMcláusula da SELECTdeclaração. Caso uma declaração contenha uma WHEREcláusula, a GROUP BYcláusula deve vir depois da WHEREcláusula.

Após a GROUP BYcláusula há uma coluna ou lista de colunas separadas por vírgula usadas para especificar o grupo.

GROUP BYExemplos de SQLite

Usamos a trackstabela do banco de dados de amostra para a demonstração.

Cláusula SQLite GROUP BYcom COUNTfunção

A instrução a seguir retorna o ID do álbum e o número de faixas por álbum. Ele usa a GROUP BYcláusula para agrupar faixas por álbum e aplica a COUNT()função a cada grupo.

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com função COUNT

Você pode usar a ORDER BYcláusula para classificar os grupos da seguinte forma:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid
ORDER BY COUNT(trackid) DESC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com função COUNT e cláusula ORDER BY

SQLite GROUP BY e INNER JOINcláusula

Você pode consultar dados de diversas tabelas usando a INNER JOINcláusula e, em seguida, usar a GROUP BYcláusula para agrupar linhas em um conjunto de linhas de resumo.

Por exemplo, a instrução a seguir une a trackstabela com a albumstabela para obter os títulos do álbum e usa a GROUP BYcláusula com a COUNTfunção para obter o número de faixas por álbum.

SELECT
	tracks.albumid,
	title,
	COUNT(trackid)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com INNER JOIN

SQLite GROUP BYcom HAVINGcláusula

Para filtrar grupos, você usa a cláusula GROUP BYwith HAVING. Por exemplo, para obter os álbuns que possuem mais de 15 faixas, você usa a seguinte instrução:

SELECT
	tracks.albumid,
	title,
	COUNT(trackid)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid
HAVING COUNT(trackid) > 15;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com cláusula HAVING

Cláusula SQLite GROUP BYcom SUMexemplo de função

Você pode usar a SUMfunção para calcular o total por grupo. Por exemplo, para obter o comprimento total e os bytes de cada álbum, você usa a SUMfunção para calcular o total de milissegundos e bytes.

SELECT
	albumid,
	SUM(milliseconds) length,
	SUM(bytes) size
FROM
	tracks
GROUP BY
	albumid;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com função SUM

SQLite GROUP BYcom MAX, MINe AVGfunções

A instrução a seguir retorna o ID do álbum, o título do álbum, a duração máxima, a duração mínima e a duração média das faixas na trackstabela.

SELECT
	tracks.albumid,
	title,
	min(milliseconds),
	max(milliseconds),
	round(avg(milliseconds),2)
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
	tracks.albumid;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite GROUP BY com funções MAX MIN AVG

GROUP BYExemplo de múltiplas colunas SQLite

No exemplo anterior, usamos uma coluna na GROUP BYcláusula. SQLite permite agrupar linhas por múltiplas colunas.

Por exemplo, para agrupar faixas por tipo de mídia e gênero, use a seguinte instrução:

SELECT
   MediaTypeId, 
   GenreId, 
   COUNT(TrackId)
FROM
   tracks
GROUP BY
   MediaTypeId, 
   GenreId;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQL GROUP BY exemplo de múltiplas colunas

SQLite usa a combinação de valores MediaTypeIde GenreIdcolunas como um grupo, por exemplo, (1,1) e (1,2). Em seguida, aplica a COUNTfunção para retornar o número de faixas em cada grupo.

GROUP BYExemplo de data SQLite

Consulte a seguinte tabela de faturas do banco de dados de exemplo:

A instrução a seguir retorna o número de faturas por anos.

SELECT
   STRFTIME('%Y', InvoiceDate) InvoiceYear, 
   COUNT(InvoiceId) InvoiceCount
FROM
   invoices
GROUP BY
   STRFTIME('%Y', InvoiceDate)
ORDER BY
   InvoiceYear;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

Exemplo de data SQLite GROUP BY

Neste exemplo:

  • A função STRFTIME('%Y', InvoiceDate)retorna um ano a partir de uma string de data.
  • A GROUP BYcláusula agrupa as faturas por anos.
  • A função COUNT()retorna o número da fatura de cada ano (ou grupo).

Neste tutorial, você aprendeu como usar a GROUP BYcláusula SQLite para agrupar linhas em um conjunto de linhas de resumo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *