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,HAVINGundSELECTausgeführt.
HAVING:
- Wird auf Gruppen von Zeilen angewendet.
- Kann Aggregatfunktionen verwenden.
- Wird nach
WHEREundGROUP BY, aber vorSELECTausgefü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