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

HAVING:

  • Tiek piemērots rindu grupām.
  • Var izmantot agregācijas funkcijas.
  • Tiek izpildīts pēc WHERE un GROUP BY, bet pirms SELECT.

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