Unterschied zwischen WHERE und HAVING?

IchBins

Neuer Benutzer
Beiträge
3
Hallo,
ich beschäftige mich gerade etwas mit SQL, und bin auf ein Problem gestoßen:
Ich habe eine Datenbank, die jeden Einkauf in einem Geschäft festhalten soll.
Es gibt Spalten wie Vorname, Nachname, Ware, Warensparte, Preis, Kaufdatum, etc.
Wenn ich jetzt den Umsatz von Männern, die verschiedene Waren von verschiedenen Warensparten gekauft haben, ausgeben möchte, mache ich das so:

SELECT Warensparte, SUM(Preis) AS Umsatz FROM db.tab WHERE Geschlecht='m' GROUP BY Warensparte;

Es erzeugt das gewünschte Ergebnis.

Aber

SELECT Warensparte, SUM(Preis) AS Umsatz FROM db.tab GROUP BY Warensparte HAVING Geschlecht='m';

müsste dasselbe Ergebnis erzeugen.

Wann benutze ich also WHERE und wann HAVING?

Danke schonmal im Voraus.
 
Werbung:
Where filtert vor der Berechnung, Having danach. Having nutzt man z.B., wenn Du alle mit einem Umsatz größer X ermitteln willst, also das setzt man das das Ergebnis einer Aggregation an.
 
Also wenn ich so etwas machen will:

SELECT Warensparte, SUM(Preis) AS Umsatz FROM db.tab WHERE Geschlecht='m' GROUP BY Warensparte HAVING Umsatz>=100;

muss ich HAVING verwenden, ansonsten ist es egal?
 
Werbung:
Zurück
Oben