Sobes.tech
Junior

Kuo skiriasi SQL sakiniuose WHERE ir HAVING?

sobes.tech AI

Atsakymas iš AI

WHERE filtruoja eilutes prieš grupavimą. HAVING filtruoja grupes, sukurtas naudojant GROUP BY, po grupavimo.

WHERE:

  • Taikoma atskiroms eilutėms.
  • Negali naudoti agregatinių funkcijų (COUNT, SUM, AVG, MIN, MAX).
  • Vykdoma prieš GROUP BY, HAVING ir SELECT.

HAVING:

  • Taikoma eilutėms grupėse.
  • Gali naudoti agregatines funkcijas.
  • Vykdoma po WHERE ir GROUP BY, bet prieš SELECT.

Pavyzdys:

Rasti klientus iš miesto 'Maskva' (kur WHERE), kurių bendras užsakymų suma viršija 1000 (kur HAVING).

SELECT customer_id, SUM(order_amount)  -- Pasirenka kliento ID ir užsakymų sumą
FROM orders  -- Iš užsakymų lentelės
WHERE city = 'Maskva'  -- Filtruoja eilutes, palieka tik užsakymus iš Maskvos
GROUP BY customer_id  -- Grupuoja eilutes pagal kliento ID
HAVING SUM(order_amount) > 1000;  -- Filtruoja grupes, palieka tik tas, kurių suma > 1000