Junior
Care este diferența dintre instrucțiunile WHERE și HAVING în SQL?
sobes.tech AI
Răspuns de la AI
WHERE filtrează rândurile înainte de grupare. HAVING filtrează grupurile create cu GROUP BY, după grupare.
WHERE:
- Se aplică la rânduri individuale.
- Nu poate folosi funcții de agregare (
COUNT,SUM,AVG,MIN,MAX). - Se execută înainte de
GROUP BY,HAVINGșiSELECT.
HAVING:
- Se aplică grupurilor de rânduri.
- Poate folosi funcții de agregare.
- Se execută după
WHEREșiGROUP BY, dar înainte deSELECT.
Exemplu:
Găsiți clienți din orașul 'Moscova' (unde WHERE) ale căror sume totale ale comenzilor depășesc 1000 (unde HAVING).
SELECT customer_id, SUM(order_amount) -- Selectează ID-ul clientului și suma comenzilor
FROM orders -- Din tabelul comenzilor
WHERE city = 'Moscova' -- Filtrează rândurile înainte de grupare, păstrează doar comenzile din Moscova
GROUP BY customer_id -- Grupează rândurile după ID-ul clientului
HAVING SUM(order_amount) > 1000; -- Filtrează grupurile, păstrează doar cele cu suma comenzilor > 1000