GROUP BY com uma ou várias colunas
Agrupe linhas por uma ou mais colunas para produzir subtotais e divisões por categoria, e leia planos de consultas com GROUP BY.
GROUP BY com uma ou várias colunas é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que GROUP BY faz
GROUP BY particiona as linhas em grupos com base nos valores de uma ou mais colunas e, em seguida, aplica agregações a cada grupo.
Agrupamento por uma coluna
Total de pedidos por usuário:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Agrupamento por várias colunas
Subgrupos por categoria e país:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Toda coluna selecionada deve estar agrupada ou agregada
Regra do SQL padrão:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY por expressão
Agrupe pelo resultado de uma expressão, como um intervalo mensal:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY por posição ou apelido
Você pode agrupar pela posição ou pelo apelido de uma lista SELECT (PostgreSQL):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionConjuntos de agrupamento, ROLLUP e CUBE
Calcule vários agrupamentos em uma única consulta — perfeito para subtotais:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalGrupos vazios não existem
GROUP BY só retorna grupos que têm pelo menos uma linha. Se quiser todas as categorias, inclusive as que têm zero pedidos, faça um LEFT JOIN partindo da lista principal e agregue.
GROUP BY e índices
O planejador pode usar uma agregação por dispersão, construindo uma tabela de dispersão dos grupos, ou uma estratégia de ordenação + agrupamento. Índices na coluna de agrupamento podem tornar a segunda abordagem rápida.
Funções de janela versus GROUP BY
GROUP BY compacta as linhas. As funções de janela adicionam colunas agregadas mantendo todas as linhas. Escolha a ferramenta certa — isso é abordado em Aprofundamento em funções de janela.
Apelidos em HAVING e WHERE
Ordem lógica: FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE não pode acessar agregações; HAVING pode.
Recapitulação
GROUP BY é a principal ferramenta dos relatórios.
- Toda coluna selecionada deve estar agrupada ou agregada
- Agrupe por colunas, expressões ou apelidos
- Use ROLLUP/CUBE/GROUPING SETS para tabelas de referência cruzada
Verificação rápida
Em uma consulta GROUP BY country, a lista SELECT pode incluir uma coluna city que não esteja agregada nem agrupada?
Perguntas Frequentes
A aula “GROUP BY com uma ou várias colunas” é grátis?
Sim — o texto completo de “GROUP BY com uma ou várias colunas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “GROUP BY com uma ou várias colunas”?
Agrupe linhas por uma ou mais colunas para produzir subtotais e divisões por categoria, e leia planos de consultas com GROUP BY. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “GROUP BY com uma ou várias colunas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY com uma ou várias colunas
- HAVING em comparação com WHERE
- Armadilhas comuns: valores NULL em agregações