Sobes.tech
Junior — Middle

Aký je rozdiel medzi podmienkami HAVING a WHERE pri tvorbe SQL dopytov?

sobes.tech AI

Odpoveď od AI

V SQL-e slúžia podmienky WHERE a HAVING na filtrovanie dát, ale sú aplikované v rôznych fázach spracovania dotazu:

  • WHERE filtruje riadky pred zoskupovaním. Používa sa na obmedzenie množiny dát, ktoré budú agregované.
  • HAVING filtruje skupiny po použití agregačných funkcií (napríklad SUM, COUNT).

Príklad:

SELECT oddelenie, COUNT(*) ako počet_zamestnancov
FROM zamestnanci
WHERE plat > 50000       -- filtrovanie podľa platu pred zoskupovaním
GROUP BY oddelenie
HAVING COUNT(*) > 10;        -- filtrovanie skupín s viac ako 10 zamestnancami

Tu sú najprv vybraní zamestnanci s platom vyšším ako 50000 (WHERE), potom sú údaje zoskupené podľa oddelení a len oddelenia s viac ako 10 zamestnancami prejdú filtrom HAVING.