Junior
Qual è la differenza tra le istruzioni WHERE e HAVING in SQL?
sobes.tech AI
Risposta dell'AI
WHERE filtra le righe prima di raggruppare. HAVING filtra i gruppi creati con GROUP BY, dopo il raggruppamento.
WHERE:
- Si applica alle righe singole.
- Non può usare funzioni di aggregazione (
COUNT,SUM,AVG,MIN,MAX). - Viene eseguito prima di
GROUP BY,HAVINGeSELECT.
HAVING:
- Si applica ai gruppi di righe.
- Può usare funzioni di aggregazione.
- Viene eseguito dopo
WHEREeGROUP BY, ma prima diSELECT.
Esempio:
Trova clienti della città 'Mosca' (dove WHERE) con un importo totale degli ordini superiore a 1000 (dove HAVING).
SELECT customer_id, SUM(order_amount) -- Seleziona ID cliente e somma degli ordini
FROM orders -- Dalla tabella degli ordini
WHERE city = 'Mosca' -- Filtra le righe prima di raggruppare, solo ordini da Mosca
GROUP BY customer_id -- Raggruppa le righe per ID cliente
HAVING SUM(order_amount) > 1000; -- Filtra i gruppi, solo quelli con somma ordini > 1000