Junior
Wat is het verschil tussen de WHERE- en HAVING-verklaringen in SQL?
sobes.tech AI
Antwoord van AI
WHERE filtert de rijen voor het groeperen. HAVING filtert de groepen die met GROUP BY zijn gemaakt, na het groeperen.
WHERE:
- Wordt toegepast op individuele rijen.
- Kan geen aggregatiefuncties gebruiken (
COUNT,SUM,AVG,MIN,MAX). - Wordt uitgevoerd vóór
GROUP BY,HAVINGenSELECT.
HAVING:
- Wordt toegepast op groepen rijen.
- Kan aggregatiefuncties gebruiken.
- Wordt uitgevoerd na
WHEREenGROUP BY, maar vóórSELECT.
Voorbeeld:
Vind klanten uit de stad 'Moskou' (waar WHERE) waarvan het totale bestelbedrag meer dan 1000 is (waar HAVING).
SELECT customer_id, SUM(order_amount) -- Selecteer klant-ID en som van bestellingen
FROM orders -- Uit de bestellingen tabel
WHERE city = 'Moskou' -- Filter rijen vóór groepering, alleen bestellingen uit Moskou
GROUP BY customer_id -- Groepeer rijen op klant-ID
HAVING SUM(order_amount) > 1000; -- Filter groepen, alleen die met som van bestellingen > 1000