Sobes.tech
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é