Sobes.tech
Junior

Wat is het verschil tussen de constructies WHERE en HAVING in SQL?

sobes.tech AI

Antwoord van AI

WHERE filtert rijen voor het groeperen (GROUP BY), waardoor beïnvloed wordt welke rijen deelnemen aan aggregatiefuncties. HAVING filtert de groepen na het groeperen, gebaseerd op de resultaten van aggregatiefuncties.

Kenmerk WHERE HAVING
Toepassing Op individuele rijen Op groepen rijen
Verwerkingstijd Voor GROUP BY Na GROUP BY
Gebruik Met velden uit de tabel, maar zonder aggregatiefuncties Met resultaten van aggregatiefuncties of velden uit GROUP BY

Voorbeeld van WHERE:

SELECT product_naam, prijs
FROM producten
WHERE category_id = 1; -- Filtert rijen **voor** het groeperen (indien van toepassing)

Voorbeeld van HAVING:

SELECT category_id, COUNT(*) AS totaal_producten
FROM producten
GROUP BY category_id
HAVING COUNT(*) > 5; -- Filtert groepen **na** het tellen van het totaal aantal producten

Voorbeeld van gecombineerde toepassing:

SELECT category_id, AVG(prijs) AS gemiddelde_prijs
FROM producten
WHERE voorraad > 0 -- Filtert alleen producten op voorraad **voor** het groeperen
GROUP BY category_id
HAVING AVG(prijs) < 100; -- Filtert groepen met een gemiddelde prijs onder de 100 **na** het groeperen en berekenen van het gemiddelde