Para que serve o GROUP BY no SQL?
Agrupa os resultados da consulta com base em um ou mais campos, permitindo usar funções de agregação (como SUM, AVG, COUNT, etc.) sobre cada grupo.
Como agrupar vendas por código do cliente e somar os valores?
SELECT cod_cliente, SUM(valor)
FROM vendas
GROUP BY cod_cliente;
O que acontece se você usar uma coluna no SELECT que não está no GROUP BY nem é agregada?
Ocorrerá um erro: “not a GROUP BY expression”.
Como agrupar por mês de uma data e contar as vendas?
SELECT TO_CHAR(data_venda, ‘MM’) AS mes, COUNT(*)
FROM vendas
GROUP BY TO_CHAR(data_venda, ‘MM’);
Como agrupar por dois campos (estado e cidade)?
SELECT estado, cidade, COUNT(*)
FROM clientes
GROUP BY estado, cidade;
Como agrupar e filtrar os grupos com média maior que 1000?
SELECT cod_cliente, AVG(valor)
FROM vendas
GROUP BY cod_cliente
HAVING AVG(valor) > 1000;
Qual a diferença entre WHERE e HAVING no contexto de GROUP BY?
WHERE filtra antes do agrupamento (linha por linha).
HAVING filtra depois, já sobre os grupos formados.
Como agrupar por ano de contratação?
SELECT EXTRACT(YEAR FROM data_contratacao) AS ano, COUNT(*)
FROM funcionarios
GROUP BY EXTRACT(YEAR FROM data_contratacao);
Como usar apelido no GROUP BY?
Não é permitido usar o alias do SELECT no GROUP BY. É necessário repetir a expressão.
Como contar a quantidade de clientes por estado ordenando pelo total?
SELECT estado, COUNT(*) AS total
FROM clientes
GROUP BY estado
ORDER BY total DESC;
O que deve aparecer no SELECT quando usamos GROUP BY?
Apenas colunas agrupadas ou funções de agregação (como COUNT, SUM, MAX, etc.).
Como filtrar resultados após o agrupamento?
Com a cláusula HAVING, que filtra depois do GROUP BY.
HAVING COUNT(*) > 5
Erro comum ao usar GROUP BY
Selecionar colunas que não estão no GROUP BY e não são agregadas. Isso gera erro no Oracle.
O que aconteceria se a cláusula GROUP BY fosse omitida na subquery?
A query não agregaria as vendas por cliente e mês, resultando em um erro ou em resultados incorretos.