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