Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Unterschied zwischen WHERE und HAVING?

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von IchBins, 7 Mai 2016.

  1. IchBins

    IchBins Neuer Benutzer

    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.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. akretschmer

    akretschmer Datenbank-Guru

  4. IchBins

    IchBins Neuer Benutzer

    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?
     
  5. akretschmer

    akretschmer Datenbank-Guru

  6. IchBins

    IchBins Neuer Benutzer

    Na das war ja einfacher als gedacht.
    Danke für deine Hilfe!
     
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden