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

HAVING:

  • Rakendub ridade gruppidele.
  • Võib kasutada aggregaatfunktsioone.
  • Täidetakse pärast WHERE ja GROUP BY, kuid enne SELECT.

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