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).