Como usar GROUP BY para agrupar resultados no SQL?
O GROUP BY no SQL é utilizado para agrupar registros com base em valores comuns de uma coluna, permitindo a aplicação de funções de agregação, como COUNT(), SUM(), AVG(), MAX() e MIN().
Estrutura básica do GROUP BY
A sintaxe do GROUP BY é simples:
SELECT categoria, COUNT(*) AS total_produtos
FROM produtos
GROUP BY categoria;
Essa consulta agrupa os produtos por categoria e retorna a quantidade de produtos em cada uma.
Agrupando com múltiplas colunas
Podemos agrupar registros por mais de uma coluna:
SELECT categoria, marca, COUNT(*) AS total_produtos
FROM produtos
GROUP BY categoria, marca;
Isso retorna a contagem de produtos por categoria e marca.
Usando GROUP BY com SUM e AVG
Se quisermos calcular a média de preços por categoria:
SELECT categoria, AVG(preco) AS preco_medio
FROM produtos
GROUP BY categoria;
Aqui, obtemos o preço médio de cada categoria de produtos.
Cuidados ao usar GROUP BY
- Todas as colunas do SELECT que não forem funções agregadas devem estar no GROUP BY.
- ORDER BY pode ser usado após GROUP BY para ordenar os resultados.
- Filtragens em grupos devem ser feitas com HAVING, e não com WHERE.
Quando usar GROUP BY no SQL para análise de dados?
O GROUP BY é um dos comandos mais importantes do SQL para análise de dados. Ele permite consolidar informações em relatórios detalhados, como número de vendas por região, faturamento por mês e quantidade de usuários ativos por categoria. O uso correto do GROUP BY facilita a organização dos dados e melhora a performance das consultas, pois permite calcular estatísticas sem precisar processar registros individuais repetidamente.
Algumas aplicações:
- Contar quantos clientes existem por cidade
- Calcular o faturamento mensal de uma empresa
- Obter a média de notas de alunos por turma
- Listar a quantidade de produtos em cada categoria
- Gerar relatórios de pedidos agrupados por status
Dicas para quem está começando
- Use
GROUP BYapenas quando precisar agrupar registros - Lembre-se de que todas as colunas no
SELECTprecisam estar noGROUP BY, exceto as funções de agregação - Se precisar filtrar os grupos, use
HAVINGao invés deWHERE - Evite agrupar dados em tabelas muito grandes sem um índice adequado
- Utilize
ORDER BYpara organizar os resultados após o agrupamento
Fernando Albuquerque
Especialista em bancos de dados SQL e modelagem de dados complexos.
Mais sobre o autor