Resumo : neste tutorial, você aprenderá como usar GROUP BY
a cláusula SQLite para criar um conjunto de linhas de resumo a partir de um conjunto de linhas.
GROUP BY
Introdução à cláusula SQLite
A GROUP BY
cláusula é uma cláusula opcional da SELECT
declaração. A GROUP BY
cláusula agrupa um grupo selecionado de linhas em linhas de resumo por valores de uma ou mais colunas.
A GROUP BY
cláusula retorna uma linha para cada grupo. Para cada grupo, você pode aplicar uma função agregada como MIN
, MAX
, SUM
, COUNT
ou AVG
para fornecer mais informações sobre cada grupo.
A instrução a seguir ilustra a sintaxe da GROUP BY
clá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 )
A GROUP BY
cláusula vem após a FROM
cláusula da SELECT
declaração. Caso uma declaração contenha uma WHERE
cláusula, a GROUP BY
cláusula deve vir depois da WHERE
cláusula.
Após a GROUP BY
cláusula há uma coluna ou lista de colunas separadas por vírgula usadas para especificar o grupo.
GROUP BY
Exemplos de SQLite
Usamos a tracks
tabela do banco de dados de amostra para a demonstração.
Cláusula SQLite GROUP BY
com COUNT
função
A instrução a seguir retorna o ID do álbum e o número de faixas por álbum. Ele usa a GROUP BY
clá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 )
Você pode usar a ORDER BY
clá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 )
SQLite GROUP BY
e INNER JOIN
cláusula
Você pode consultar dados de diversas tabelas usando a INNER JOIN
cláusula e, em seguida, usar a GROUP BY
cláusula para agrupar linhas em um conjunto de linhas de resumo.
Por exemplo, a instrução a seguir une a tracks
tabela com a albums
tabela para obter os títulos do álbum e usa a GROUP BY
cláusula com a COUNT
funçã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 )
SQLite GROUP BY
com HAVING
cláusula
Para filtrar grupos, você usa a cláusula GROUP BY
with 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 )
Cláusula SQLite GROUP BY
com SUM
exemplo de função
Você pode usar a SUM
função para calcular o total por grupo. Por exemplo, para obter o comprimento total e os bytes de cada álbum, você usa a SUM
funçã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 )
SQLite GROUP BY
com MAX
, MIN
e AVG
funçõ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 tracks
tabela.
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 )
GROUP BY
Exemplo de múltiplas colunas SQLite
No exemplo anterior, usamos uma coluna na GROUP BY
clá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 )
SQLite usa a combinação de valores MediaTypeId
e GenreId
colunas como um grupo, por exemplo, (1,1) e (1,2). Em seguida, aplica a COUNT
função para retornar o número de faixas em cada grupo.
GROUP BY
Exemplo 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:
Neste exemplo:
- A função
STRFTIME('%Y', InvoiceDate)
retorna um ano a partir de uma string de data. - A
GROUP BY
clá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 BY
cláusula SQLite para agrupar linhas em um conjunto de linhas de resumo.