Sobes.tech
Middle+

Jaký je rozdíl mezi WHERE a HAVING?

sobes.tech AI

Odpověď od AI

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

  • WHERE filtruje řádky před seskupením. Používá se na původní data a omezuje množinu řádků, které projdou dalším zpracováním.

  • HAVING filtruje skupiny po provedení agregačních funkcí a seskupení (GROUP BY). Používá se k omezení skupin na základě agregačních podmínek.

Příklad:

SELECT department, COUNT(*) as employee_count
FROM employees
WHERE salary > 50000  -- filtrujeme zaměstnance s platem > 50000
GROUP BY department
HAVING COUNT(*) > 10     -- vybíráme oddělení s více než 10 zaměstnanci

Zde jsou nejprve vybráni zaměstnanci s platem vyšším než 50000 (WHERE), poté jsou seskupeni podle oddělení a z těchto skupin jsou vybrány pouze ty, kde je počet zaměstnanců větší než 10 (HAVING).