Junior
Aký je rozdiel medzi príkazmi WHERE a HAVING v SQL?
sobes.tech AI
Odpoveď od AI
WHERE filtruje riadky pred skupinovaním. HAVING filtruje skupiny vytvorené pomocou GROUP BY, po skupinovaní.
WHERE:
- Platí na jednotlivé riadky.
- Nemôže používať agregačné funkcie (
COUNT,SUM,AVG,MIN,MAX). - Je vykonávané pred
GROUP BY,HAVINGaSELECT.
HAVING:
- Platí na skupiny riadkov.
- Môže používať agregačné funkcie.
- Je vykonávané po
WHEREaGROUP BY, ale predSELECT.
Príklad:
Nájdite zákazníkov z mesta 'Moskva' (kde WHERE), ktorých celková suma objednávok presahuje 1000 (kde HAVING).
SELECT customer_id, SUM(order_amount) -- Vyberte ID zákazníka a súčet jeho objednávok
FROM orders -- Z tabuľky objednávok
WHERE city = 'Moskva' -- Filtruje riadky pred skupinovaním, ponecháva iba objednávky z Moskvy
GROUP BY customer_id -- Skupinu riadkov podľa ID zákazníka
HAVING SUM(order_amount) > 1000; -- Filtruje skupiny, ponecháva iba tie s súčtom objednávok > 1000