Sobes.tech
Junior

Mi a különbség a WHERE és a HAVING utasítások között SQL-ben?

sobes.tech MI

Válasz az MI-től

A WHERE szűrő sorokat mielőtt csoportosítaná. A HAVING szűri a GROUP BY-val létrehozott csoportokat, utána a csoportosítás után.

WHERE:

  • Egyedi sorokra alkalmazható.
  • Nem használhat aggregált függvényeket (COUNT, SUM, AVG, MIN, MAX).
  • A GROUP BY, HAVING és SELECT előtt fut le.

HAVING:

  • Sorok csoportjára alkalmazható.
  • Használhat aggregált függvényeket.
  • A WHERE és a GROUP BY után, de a SELECT előtt fut le.

Példa:

Keressen olyan ügyfeleket a 'Moszkva' városból (ahol WHERE), akik összes rendelése meghaladja az 1000-et (ahol HAVING).

SELECT customer_id, SUM(order_amount)  -- Válassza ki az ügyfél azonosítóját és rendeléseinek összegét
FROM orders  -- A rendeléseket tartalmazó táblából
WHERE city = 'Moszkva'  -- Szűri a sorokat, csak Moszkvából származó rendeléseket tart meg
GROUP BY customer_id  -- Csoportosítja a sorokat ügyfél azonosító szerint
HAVING SUM(order_amount) > 1000;  -- Szűri a csoportokat, csak azok maradjanak, ahol az összeg > 1000