WHERE ou HAVING em SQL: qual usar?
Aprenda a diferença entre WHERE e HAVING e saiba em que etapa cada filtro é aplicado em uma consulta SQL.
WHERE filtra linhas
WHERE é aplicado antes do agrupamento. Use-o para eliminar linhas individuais.
SELECT *
FROM pedidos
WHERE situacao = 'ATIVO';
HAVING filtra grupos
HAVING normalmente é usado depois de GROUP BY, especialmente para condições sobre funções agregadas.
SELECT cliente_id,
COUNT(*) AS total
FROM pedidos
GROUP BY cliente_id
HAVING COUNT(*) > 5;
Usando WHERE e HAVING juntos
SELECT cliente_id,
SUM(valor) AS total
FROM pedidos
WHERE data_pedido >= '2026-01-01'
GROUP BY cliente_id
HAVING SUM(valor) > 1000;
Primeiro são considerados apenas pedidos de 2026. Depois, entre os grupos formados, permanecem apenas clientes cujo total supera 1000.
Regra rápida
Resumo: filtro de linha → WHERE. Filtro de resultado agregado → HAVING.
Assuntos:WHEREHAVINGGROUP BY