Sobes.tech
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, HAVING en SELECT.

HAVING:

  • Wordt toegepast op groepen rijen.
  • Kan aggregatiefuncties gebruiken.
  • Wordt uitgevoerd na WHERE en GROUP BY, maar vóór SELECT.

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