Junior
Kuo skiriasi SQL sakiniuose WHERE ir HAVING?
sobes.tech AI
Atsakymas iš AI
WHERE filtruoja eilutes prieš grupavimą. HAVING filtruoja grupes, sukurtas naudojant GROUP BY, po grupavimo.
WHERE:
- Taikoma atskiroms eilutėms.
- Negali naudoti agregatinių funkcijų (
COUNT,SUM,AVG,MIN,MAX). - Vykdoma prieš
GROUP BY,HAVINGirSELECT.
HAVING:
- Taikoma eilutėms grupėse.
- Gali naudoti agregatines funkcijas.
- Vykdoma po
WHEREirGROUP BY, bet priešSELECT.
Pavyzdys:
Rasti klientus iš miesto 'Maskva' (kur WHERE), kurių bendras užsakymų suma viršija 1000 (kur HAVING).
SELECT customer_id, SUM(order_amount) -- Pasirenka kliento ID ir užsakymų sumą
FROM orders -- Iš užsakymų lentelės
WHERE city = 'Maskva' -- Filtruoja eilutes, palieka tik užsakymus iš Maskvos
GROUP BY customer_id -- Grupuoja eilutes pagal kliento ID
HAVING SUM(order_amount) > 1000; -- Filtruoja grupes, palieka tik tas, kurių suma > 1000