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 BY
apenas quando precisar agrupar registros - Lembre-se de que todas as colunas no
SELECT
precisam estar noGROUP BY
, exceto as funções de agregação - Se precisar filtrar os grupos, use
HAVING
ao invés deWHERE
- Evite agrupar dados em tabelas muito grandes sem um índice adequado
- Utilize
ORDER BY
para organizar os resultados após o agrupamento
Contribuições de Fernando Albuquerque