Junior
Koja je razlika između naredbi WHERE i HAVING u SQL?
sobes.tech АИ
Одговор од АИ
WHERE filtrira redove pre grupisanja. HAVING filtrira grupe koje su kreirane pomoću GROUP BY, nakon grupisanja.
WHERE:
- Primjenjuje se na pojedinačne redove.
- Ne može koristiti agregatne funkcije (
COUNT,SUM,AVG,MIN,MAX). - Izvršava se prije
GROUP BY,HAVINGiSELECT.
HAVING:
- Primjenjuje se na grupe redova.
- Može koristiti agregatne funkcije.
- Izvršava se nakon
WHEREiGROUP BY, ali prijeSELECT.
Primjer:
Pronađite klijente iz grada 'Moskva' (gdje WHERE) čiji je ukupan iznos narudžbi veći od 1000 (gdje HAVING).
SELECT customer_id, SUM(order_amount) -- Odaberite ID klijenta i sumu njegovih narudžbi
FROM orders -- Iz tabele narudžbi
WHERE city = 'Moskva' -- Filtrira redove prije grupisanja, zadržava samo narudžbe iz Moskve
GROUP BY customer_id -- Grupira redove po ID-u klijenta
HAVING SUM(order_amount) > 1000; -- Filtrira grupe, zadržava samo one sa sumom narudžbi > 1000