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.

Compartilhar: