Sobes.tech
Junior — Middle

Aký je rozdiel medzi podmienkou WHERE a HAVING pri práci s SQL dotazmi?

sobes.tech AI

Odpoveď od AI

WHERE a HAVING sú podmienky filtrovania v SQL, ale aplikujú sa v rôznych fázach spracovania údajov.

  • WHERE filtruje riadky pred zoskupením. Používa sa na výber záznamov na úrovni pôvodných údajov.
  • HAVING filtruje skupiny vytvorené príkazom GROUP BY. Aplikujú sa po agregácii.

Príklad:

SELECT oddelenie, COUNT(*) ako počet_zamestnancov
FROM zamestnanci
WHERE plat > 50000  -- filtrujeme zamestnancov s platom > 50000
GROUP BY oddelenie
HAVING COUNT(*) > 10      -- vyberáme oddelenia s viac ako 10 zamestnancami

Najprv sú vybraní zamestnanci s platom nad 50000 (WHERE), potom sú údaje zoskupené podľa oddelení, a nakoniec sú vybrané len tie oddelenia, kde je počet zamestnancov väčší ako 10 (HAVING).