Junior
Mis vahe on SQL-is WHERE ja HAVING lausetel?
sobes.tech AI
Vastus AI-lt
WHERE filterib read enne grupseerimist. HAVING filterib grupid, mis on loodud GROUP BY abil, pärast grupseerimist.
WHERE:
- Rakendub üksikutele ridadele.
- Ei saa kasutada aggregaatfunktsioone (
COUNT,SUM,AVG,MIN,MAX). - Täidetakse enne
GROUP BY,HAVINGjaSELECT.
HAVING:
- Rakendub ridade gruppidele.
- Võib kasutada aggregaatfunktsioone.
- Täidetakse pärast
WHEREjaGROUP BY, kuid enneSELECT.
Näide:
Leia kliendid linnast 'Moskva' (kus WHERE), kelle kogusumma tellimustest ületab 1000 (kus HAVING).
SELECT customer_id, SUM(order_amount) -- Valib kliendi ID ja tellimuste summa
FROM orders -- Tellimuste tabelist
WHERE city = 'Moskva' -- Filtreerib read, jätab ainult Moskva tellimused
GROUP BY customer_id -- Grupeerib read kliendi ID järgi
HAVING SUM(order_amount) > 1000; -- Filtreerib gruppe, jätab ainult need, mille summa > 1000