Sobes.tech
Junior

Mis vahe on WHERE ja HAVING SQL-is?

sobes.tech AI

Vastus AI-lt

WHERE filterdab read only enne ridaid enne gruppimise (GROUP BY), mõjutades, millised read osalevad aggregaatfunktsioonides. HAVING filterdab grupid pärast gruppimist, põhinedes aggregaatfunktsioonide tulemustel.

Omadus WHERE HAVING
Rakendus Üksikutele ridadele Ridade gruppidele
Töötlemisaeg Enne GROUP BY-d Pärast GROUP BY-d
Kasutus Tabeli väljadega, kuid ilma aggregaatfunktsioonideta Aggregaatfunktsioonide või GROUP BY väljadega

Näide WHERE kasutamisest:

SELECT toote_nimi, hind
FROM tooted
WHERE category_id = 1; -- Filtreerib read **enne** gruppimist (kui see oleks vajalik)

Näide HAVING kasutamisest:

SELECT category_id, COUNT(*) AS kogusumma_tooteid
FROM tooted
GROUP BY category_id
HAVING COUNT(*) > 5; -- Filtreerib grupid **pärast** kogusumma arvutamist

Kombineeritud näide:

SELECT category_id, AVG(hind) AS keskmine_hind
FROM tooted
WHERE laoseis > 0 -- Filtreerib ainult laos olevad tooted **enne** gruppimist
GROUP BY category_id
HAVING AVG(hind) < 100; -- Filtreerib grupid, mille keskmine hind on alla 100 **pärast** gruppimist ja keskmise arvutamist