Sobes.tech
Junior

Was ist der Unterschied zwischen WHERE- und HAVING-Anweisungen in SQL?

sobes.tech KI

Antwort von AI

WHERE filtert Zeilen vor der Gruppierung. HAVING filtert die durch GROUP BY erstellten Gruppen, nach der Gruppierung.

WHERE:

  • Wird auf einzelne Zeilen angewendet.
  • Kann keine Aggregatfunktionen (COUNT, SUM, AVG, MIN, MAX) verwenden.
  • Wird vor GROUP BY, HAVING und SELECT ausgeführt.

HAVING:

  • Wird auf Gruppen von Zeilen angewendet.
  • Kann Aggregatfunktionen verwenden.
  • Wird nach WHERE und GROUP BY, aber vor SELECT ausgeführt.

Beispiel:

Finde Kunden aus der Stadt 'Moskau' (wo WHERE), deren Gesamtbestellwert 1000 übersteigt (wo HAVING).

SELECT customer_id, SUM(order_amount)  -- Wählt Kunden-ID und Summe der Bestellungen
FROM orders  -- Aus der Bestelltabelle
WHERE city = 'Moskau'  -- Filtert Zeilen vor der Gruppierung, nur Bestellungen aus Moskau
GROUP BY customer_id  -- Gruppiert Zeilen nach Kunden-ID
HAVING SUM(order_amount) > 1000;  -- Filtert Gruppen, nur solche mit Bestellsumme > 1000