Junior
Qual é a diferença entre as cláusulas WHERE e HAVING em SQL?
sobes.tech IA
Resposta da IA
WHERE filtra as linhas antes de agrupar. HAVING filtra os grupos criados com GROUP BY, depois de agrupar.
WHERE:
- Aplica-se a linhas individuais.
- Não pode usar funções de agregação (
COUNT,SUM,AVG,MIN,MAX). - É executado antes de
GROUP BY,HAVINGeSELECT.
HAVING:
- Aplica-se a grupos de linhas.
- Pode usar funções de agregação.
- É executado após
WHEREeGROUP BY, mas antes deSELECT.
Exemplo:
Encontrar clientes da cidade 'Moscou' (onde WHERE) cujo valor total de pedidos excede 1000 (onde HAVING).
SELECT customer_id, SUM(order_amount) -- Seleciona ID do cliente e soma dos seus pedidos
FROM orders -- Da tabela de pedidos
WHERE city = 'Moscou' -- Filtra linhas antes de agrupar, mantendo apenas pedidos de Moscou
GROUP BY customer_id -- Agrupa linhas por ID do cliente
HAVING SUM(order_amount) > 1000; -- Filtra grupos, mantendo apenas aqueles com soma de pedidos > 1000