Junior
Aký je rozdiel medzi príkazmi WHERE a HAVING v SQL?
sobes.tech AI
Odpoveď od AI
WHERE saťahuje pred zoskupením a filtruje riadky výsledku FROM. HAVING sa aplikuje po zoskupení a filtruje skupiny vytvorené pomocou GROUP BY.
Príklad:
Predpokladajme, že máme tabuľku orders s stĺpcami customer_id, order_date a amount.
Nájdite všetkých zákazníkov, ktorých celková suma objednávok presahuje 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Nájdite všetky objednávky s čiastkou viac ako 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Porovnávacia tabuľka:
| Vlastnosť | WHERE | HAVING |
|---|---|---|
| Použitie | Na jednotlivé riadky pred zoskupením | Na zoskupené riadky po zoskupení |
| Používa | Stĺpce z FROM |
Agregačné funkcie a stĺpce z GROUP BY |
| Vykonáva sa | Pred GROUP BY |
Po GROUP BY |
| Agregačné funkcie | Nemôžu byť použité priamo | Môžu byť použité |