Junior
Kāda ir atšķirība starp SQL vaicājumu WHERE un HAVING?
sobes.tech AI
Atbilde no AI
WHERE filtrē rindas pirms grupēšanas. HAVING filtrē grupas, kas izveidotas ar GROUP BY, pēc grupēšanas.
WHERE:
- Tiek piemērots atsevišķām rindām.
- Nevar izmantot agregācijas funkcijas (
COUNT,SUM,AVG,MIN,MAX). - Tiek izpildīts pirms
GROUP BY,HAVINGunSELECT.
HAVING:
- Tiek piemērots rindu grupām.
- Var izmantot agregācijas funkcijas.
- Tiek izpildīts pēc
WHEREunGROUP BY, bet pirmsSELECT.
Piemērs:
Atrodiet klientus no pilsētas 'Maskava' (kur WHERE), kuru kopējā pasūtījumu summa pārsniedz 1000 (kur HAVING).
SELECT customer_id, SUM(order_amount) -- Izvēlas klienta ID un pasūtījumu summu
FROM orders -- No pasūtījumu tabulas
WHERE city = 'Maskava' -- Filtrē rindas, tikai pasūtījumi no Maskavas
GROUP BY customer_id -- Grupē rindas pēc klienta ID
HAVING SUM(order_amount) > 1000; -- Filtrē grupas, tikai tās ar summu > 1000