Resumo :neste tutorial, você aprenderá como usar SQLite
GROUP BY
cláusula para fazer um conjunto de linhas de resumo de um conjunto de linhas. Introdução ao SQLite GROUP BY
cláusula
O
GROUP BY
cláusula é uma cláusula opcional do SELECT
demonstração. O GROUP BY
cláusula um grupo selecionado de linhas em linhas de resumo por valores de uma ou mais colunas. O
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 do SQLite
GROUP BY
cláusula. SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql)
Tente
O
GROUP BY
cláusula vem depois do FROM
cláusula do SELECT
demonstração. Caso uma instrução contenha um WHERE
cláusula, o GROUP BY
A cláusula deve vir após o WHERE
cláusula. Seguindo o
GROUP BY
cláusula é uma coluna ou uma lista de colunas separadas por vírgulas usadas para especificar o grupo. SQLite GROUP BY
exemplos
Usamos as
tracks
tabela do banco de dados de exemplo para a demonstração. 
SQLite GROUP BY
cláusula com COUNT
função
A instrução a seguir retorna o ID do álbum e o número de faixas por álbum. Ele usa o
GROUP BY
cláusula para agrupar faixas por álbum e aplica o COUNT()
função para cada grupo. SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Tente

Você pode usar o
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;
Code language: SQL (Structured Query Language) (sql)
Tente

SQLite GROUP BY
e INNER JOIN
cláusula
Você pode consultar dados de várias tabelas usando o
INNER JOIN
cláusula, então use o GROUP BY
cláusula para agrupar linhas em um conjunto de linhas de resumo. Por exemplo, a instrução a seguir une as
tracks
tabela com os albums
tabela para obter os títulos do álbum e usa o GROUP BY
cláusula com o 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;
Code language: SQL (Structured Query Language) (sql)
Tente

SQLite GROUP BY
com HAVING
cláusula
Para filtrar grupos, você usa o
GROUP BY
com HAVING
cláusula. Por exemplo, para obter os álbuns com mais de 15 faixas, use 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;
Code language: SQL (Structured Query Language) (sql)
Tente

SQLite GROUP BY
cláusula com SUM
exemplo de função
Você pode usar o
SUM
função para calcular o total por grupo. Por exemplo, para obter o comprimento total e os bytes de cada álbum, você usa o SUM
função para calcular o total de milissegundos e bytes. SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Tente

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 nas
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;
Code language: SQL (Structured Query Language) (sql)
Tente

SQLite GROUP BY
exemplo de várias colunas
No exemplo anterior, usamos uma coluna no
GROUP BY
cláusula. O SQLite permite agrupar linhas por várias colunas. Por exemplo, para agrupar faixas por tipo e gênero de mídia, use a seguinte instrução:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;
Code language: SQL (Structured Query Language) (sql)
Tente

SQLite usa a combinação de valores de
MediaTypeId
e GenreId
colunas como um grupo, por exemplo, (1,1) e (1,2). Em seguida, aplica o COUNT
função para retornar o número de faixas em cada grupo. SQLite GROUP BY
exemplo de data
Consulte a seguinte tabela de faturas do banco de dados de exemplo:

A declaraçã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;
Code language: SQL (Structured Query Language) (sql)
Aqui está a saída:

Neste exemplo:
- A função
STRFTIME('%Y', InvoiceDate)
retorna um ano de uma string de data. - O
GROUP BY
cláusula agrupa as faturas por anos. - A função
COUNT()
retorna o número da fatura em cada ano (ou grupo).
Neste tutorial, você aprendeu como usar o SQLite
GROUP BY
cláusula para agrupar linhas em um conjunto de linhas de resumo.