Junior
Jaký je rozdíl mezi příkazy WHERE a HAVING v SQL?
sobes.tech AI
Odpověď od AI
WHERE filtruje řádky před seskupením. HAVING filtruje skupiny vytvořené pomocí GROUP BY, po seskupení.
WHERE:
- Platí na jednotlivé řádky.
- Nemůže používat agregační funkce (
COUNT,SUM,AVG,MIN,MAX). - Je prováděno dříve než
GROUP BY,HAVINGaSELECT.
HAVING:
- Platí na skupiny řádků.
- Může používat agregační funkce.
- Je prováděno po
WHEREaGROUP BY, ale předSELECT.
Příklad:
Najděte zákazníky z města 'Moskva' (kde WHERE), jejichž celková částka objednávek přesahuje 1000 (kde HAVING).
SELECT customer_id, SUM(order_amount) -- Vyberte ID zákazníka a součet jeho objednávek
FROM orders -- Z tabulky objednávek
WHERE city = 'Moskva' -- Filtruje řádky před seskupením, ponechává pouze objednávky z Moskvy
GROUP BY customer_id -- Seskupí řádky podle ID zákazníka
HAVING SUM(order_amount) > 1000; -- Filtruje skupiny, ponechává pouze ty s součtem objednávek > 1000