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