Sobes.tech
Junior — Middle

Jaký je rozdíl mezi podmínkami HAVING a WHERE při tvorbě SQL dotazů?

sobes.tech AI

Odpověď od AI

V SQL slouží podmínky WHERE a HAVING k filtrování dat, ale jsou aplikovány v různých fázích zpracování dotazu:

  • WHERE filtruje řádky před seskupením. Používá se k omezení množiny dat, která budou agregována.
  • HAVING filtruje skupiny po použití agregačních funkcí (například SUM, COUNT).

Příklad:

SELECT oddělení, COUNT(*) jako počet_zaměstnanců
FROM zaměstnanci
WHERE plat > 50000       -- filtrování podle platu před seskupením
GROUP BY oddělení
HAVING COUNT(*) > 10;        -- filtrování skupin s více než 10 zaměstnanci

Zde jsou nejprve vybráni zaměstnanci s platem vyšším než 50000 (WHERE), poté jsou data seskupena podle oddělení a pouze oddělení s více než 10 zaměstnanci projdou filtrem HAVING.