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ésSELECTelőtt fut le.
HAVING:
- Sorok csoportjára alkalmazható.
- Használhat aggregált függvényeket.
- A
WHEREés aGROUP BYután, de aSELECTelő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