Sobes.tech
Middle

Aký je rozdiel medzi WHERE a HAVING v SQL a prečo používať HAVING po GROUP BY?

sobes.tech AI

Odpoveď od AI

V SQL-u, operator WHERE filtrira vrstice pred združevanjem, torej se uporablja na izvornih podatkih in izključuje nepotrebne zapise pred izvajanjem agregatnih funkcij.

HAVING pa se uporablja za filtriranje že združenih podatkov po uporabi GROUP BY. Omogoča filtriranje skupin glede na agregatne pogoje.

Na primer, če želite izbrati stranke, katerih vsota naročil je večja od 1000, WHERE ni primeren, saj je vsota agregatna funkcija, HAVING pa je prav za takšne primere:

SELECT customer_id, SUM(order_amount) AS total
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) > 1000;

Tako se HAVING uporablja za filtriranje rezultatov agregacije, medtem ko WHERE filtrira izvorne podatke pred agregacijo.