Sobes.tech
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, HAVING i SELECT.

HAVING:

  • Primjenjuje se na grupe redova.
  • Može koristiti agregatne funkcije.
  • Izvršava se nakon WHERE i GROUP BY, ali prije SELECT.

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