CodePráticov3.3.0
SQL

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.