Sobes.tech
Junior

Mi a különbség a WHERE és a HAVING szerkezetek között SQL-ben?

sobes.tech MI

Válasz az MI-től

A WHERE szűri a sorokat az csoportosítás (GROUP BY) elött, befolyásolva, hogy mely sorok vesznek részt az aggregáló függvényekben. A HAVING szűri a csoportokat a csoportosítás után, az aggregáló függvények eredményei alapján.

Jellemző WHERE HAVING
Alkalmazás Egyedi sorokra Sorcsoporokra
Feldolgozási idő A GROUP BY elött A GROUP BY után
Használat A táblázat mezőivel, de nem aggregáló függvényekkel Az aggregáló függvények eredményeivel vagy a GROUP BY mezőivel

A WHERE használatának példája:

SELECT termék_neve, ár
FROM termékek
WHERE category_id = 1; -- Szűri a sorokat **a** csoportosítás **elött** (ha lett volna)

A HAVING használatának példája:

SELECT category_id, COUNT(*) AS összes_termék
FROM termékek
GROUP BY category_id
HAVING COUNT(*) > 5; -- Szűri a csoportokat **a** számlálás **után**

Kombinált használat példája:

SELECT category_id, AVG(ár) AS átlagár
FROM termékek
WHERE stock > 0 -- Csak a raktáron lévő termékeket szűri **a** csoportosítás **elött**
GROUP BY category_id
HAVING AVG(ár) < 100; -- Szűri a csoportokat, amelyek átlagára kevesebb, mint 100 **a** csoportosítás és az átlag számítása után