Juniorfundamentosgroup by
HAVING vs WHERE: a ordem importa
Publicado em 2025-02-15
Pergunta
Quando usar WHERE e quando usar HAVING?
Explicação
WHERE filtra linhas antes do GROUP BY. HAVING filtra grupos depois da agregação. Confundir os dois gera resultados errados — ou erro de sintaxe.
Query SQL
sql
SELECT cliente_id, COUNT(*) AS pedidos
FROM pedidos
WHERE status = 'pago'
GROUP BY cliente_id
HAVING COUNT(*) >= 5;Resposta esperada
Clientes com 5 ou mais pedidos pagos.
Erros comuns
- Tentar usar agregação no WHERE (COUNT(*) > 5 não funciona ali)
- Filtrar antes de agregar e depois reclamar de performance
Dica de entrevista
WHERE para colunas; HAVING para funções agregadas.