40. GROUP BY
Escrito por Uianes Luiz Rockenbach Biondo.
Última atualização em 04 out. 2023
Última atualização em 04 out. 2023
A instrução GROUP BY é usada para agrupar os resultados de funções de agregação, como COUNT(), MAX(), MIN(), SUM() e AVG(). Imagine que você queira exibir a contagem de alunos por cidade; isso sempre foi possível, porém, envolveria utilizar a opção de COUNT para cada cidade registrada. Com o GROUP BY, é possível simplificar o processo. Sintaxe:
SELECT coluna1, coluna2, ...
FROM nomeTabela
WHERE condição
GROUP BY nomeColuna
ORDER BY nomeColuna;
Exemplo
Tabela Alunos
id_aluno | nome_aluno | cidade_aluno |
1 | Uianes | Santo Augusto |
2 | Maria | Três Passos |
3 | José | Santo Augusto |
4 | Antônio | Santo Augusto |
5 | João | Tenente Portela |
SELECT COUNT(cidade_aluno), cidade_aluno
FROM Alunos
GROUP BY cidade_aluno;
Resultado:
COUNT(nome_cidade) | nome_cidade |
3 | Santo Augusto |
1 | Três Passos |
1 | Tenente Portela |
É possível utilizar a instrução ORDER BY em conjunto com GROUP BY, porém, a ORDER BY deve aparecer por último. Veja o exemplo anterior, mas com o resultado em ordem alfabética ascendente (crescente).
SELECT COUNT(cidade_aluno), cidade_aluno
FROM Alunos
GROUP BY cidade_aluno
ORDER BY cidade_aluno ASC;
Resultado:
COUNT(nome_cidade) | nome_cidade |
3 | Santo Augusto |
1 | Tenente Portela |
1 | Três Passos |
Utilização do GROUP BY com JOIN:
Observe as tabelas.
Tabela Alunos
id_aluno | nome_aluno | cidade_aluno |
1 | Uianes | Santo Augusto |
2 | Maria | Três Passos |
3 | José | Santo Augusto |
4 | Antônio | Santo Augusto |
5 | João | Tenente Portela |
Tabela Nota
nota_id | id_aluno | disciplina_nome | nota |
1 | 1 | Programação WEB | 10 |
2 | 5 | História | 9 |
3 | 2 | Banco de Dados | 7 |
4 | 5 | Programação WEB | 6 |
Comando:
SELECT alunos.nome_aluno, COUNT(alunos.id_aluno) AS "Quantidade de notas"
FROM Alunos
LEFT JOIN Nota
ON alunos.id_aluno = alunos.id_nota
GROUP BY alunos.nome_aluno;
Resultado:
nome_aluno | Quantidade de notas |
Antônio | 0 |
João | 2 |
José | 0 |
Maria | 1 |
Uianes | 1 |