Study-Board.de
  1. Magazin
    1. Hochschulen
    2. Häufige Fragen
  2. Forum
    1. Dashboard
    2. Unerledigte Themen
    3. Datenbanken
    4. Semantische Suche
  3. Mediathek
  4. Umfragen
  5. Studium
    1. Welches Fernstudium?
    2. Hochschulfinder
    3. Studiengänge
    4. Hochschulen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Forum
  • Artikel
  • Seiten
  • Galerie
  • Datenbank-Einträge
  • Umfragen
  • Erweiterte Suche
  1. Study-Board.de
  2. Forum
  3. Fachforen Wirtschaftswissenschaften
  4. Wirtschaftsinformatik
Anzeige
SGD Fernstudium – WM-Vorteile 2026

GROUP BY und HAVING – wann filtere ich mit WHERE und wann erst nach der Gruppierung?

  • AnnaWInf
  • 22. August 2026 um 15:45
  • Unerledigt
  • AnnaWInf
    WiInf
    Beiträge
    29
    • 22. August 2026 um 15:45
    • #1

    Moin, ich übe gerade für die Datenbank-Klausur und stolpere ständig über dieselbe Fehlermeldung.

    Ich möchte pro Abteilung die Anzahl der Mitarbeiter und will nur Abteilungen sehen, in denen mehr als fünf arbeiten. Schreibe ich die Bedingung in WHERE, meckert die Datenbank, dass eine Aggregatfunktion dort nicht erlaubt sei. Nehme ich zusätzliche Spalten in SELECT auf, kommt die Meldung, die Spalte müsse in der GROUP-BY-Klausel stehen.

    Ich bekomme es mit Ausprobieren irgendwann hin, aber ich verstehe die Regel dahinter nicht. Also:

    • Woran entscheide ich, ob eine Bedingung in WHERE oder in HAVING gehört?
    • Warum muss jede Spalte aus SELECT auch in GROUP BY stehen?
    • Und ist COUNT(*) dasselbe wie COUNT(spaltenname)? In meinen Ergebnissen kommt manchmal etwas anderes raus.

    Danke schon mal – ich glaube, mir fehlt hier ein Grundprinzip und nicht die Syntax. 🙈

  • Anzeige
    ILS FernschuleDeutschlands größte Fernschule – 4 Wochen kostenlos testen.
    Mehr erfahren →
  • Tobi89
    WiInf · IT
    Beiträge
    27
    • 22. August 2026 um 18:20
    • #2

    Du hast völlig recht: Es ist ein Grundprinzip, und wenn du das einmal hast, beantworten sich alle drei Fragen von selbst. Das Prinzip heißt logische Verarbeitungsreihenfolge – und die ist eine andere als die Schreibreihenfolge:

    FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

    Man schreibt SELECT zuerst, aber die Datenbank wertet es fast zuletzt aus. Damit ist alles erklärt:

    1. WHERE läuft vor der Gruppierung und filtert einzelne Zeilen. Zu diesem Zeitpunkt existiert noch keine Gruppe, also kann es auch noch kein COUNT geben – deshalb die Fehlermeldung. HAVING läuft nach der Gruppierung und filtert fertige Gruppen. Faustregel: Bedingung auf einen Einzelwert einer Zeile → WHERE. Bedingung auf ein Ergebnis wie COUNT, SUM oder AVG → HAVING.
    2. Warum jede Spalte in GROUP BY muss: Nach dem Gruppieren ist aus vielen Zeilen eine geworden. Fragst du eine Spalte ab, die innerhalb der Gruppe verschiedene Werte hat, gibt es keine sinnvolle Antwort – welchen Namen sollte die Datenbank für eine Abteilung mit acht Mitarbeitern ausgeben? Deshalb gilt: Jede Spalte in SELECT muss entweder in GROUP BY stehen oder in einer Aggregatfunktion. (MySQL/MariaDB waren hier historisch lax und haben irgendeinen Wert geliefert; mit aktivem ONLY_FULL_GROUP_BY verhalten sie sich heute wie die anderen. Verlass dich in der Klausur auf die strenge Regel.)
    3. COUNT(*) vs. COUNT(spalte): Das ist kein Zufall, sondern NULL. COUNT(*) zählt Zeilen. COUNT(spalte) zählt nur Zeilen, in denen diese Spalte nicht NULL ist. Wenn drei von zehn Mitarbeitern keine Telefonnummer haben, liefert COUNT(*) zehn und COUNT(telefon) sieben. Dazu kommt COUNT(DISTINCT spalte) für die Anzahl verschiedener Werte.

    Deine Abfrage sieht damit ungefähr so aus:

    SELECT abteilung, COUNT(*) AS anzahl FROM mitarbeiter WHERE austrittsdatum IS NULL GROUP BY abteilung HAVING COUNT(*) > 5 ORDER BY anzahl DESC

    Beachte, dass hier beides vorkommt und das völlig normal ist: WHERE wirft ausgeschiedene Mitarbeiter raus, bevor gezählt wird, HAVING wirft danach die kleinen Abteilungen raus. Ein letzter Merkposten: Der Alias anzahl darf in ORDER BY verwendet werden (das läuft nach SELECT), in WHERE und HAVING dagegen in der Regel nicht – dort musst du den Ausdruck wiederholen.

  • DanielIT
    WiInf · IT
    Beiträge
    35
    • 23. August 2026 um 08:25
    • #3

    Tobis Reihenfolge ist der Schlüssel. Ich hänge die Stolperfallen an, die einem nach der Klausur im echten Betrieb begegnen – die kommen aber auch in Aufgaben gern als Teilfrage vor.

    1. Der Klassiker: LEFT JOIN plus COUNT(*). Du willst pro Kunde die Anzahl der Bestellungen, auch für Kunden ohne Bestellung. Mit LEFT JOIN bleiben die kundenlosen Zeilen erhalten – aber COUNT(*) zählt trotzdem 1, weil die Zeile ja existiert, nur mit lauter NULL-Werten aus der rechten Tabelle. Richtig ist COUNT(bestellung.bestellID): Das zählt die NULL-Zeile nicht mit und liefert die gewünschte 0. Dieser Fehler ist in Auswertungen extrem verbreitet.

    2. NULL bildet eine eigene Gruppe. Gruppierst du nach einer Spalte, in der NULL vorkommt, entsteht eine gemeinsame Gruppe für alle NULL-Werte – obwohl NULL sonst nirgends gleich NULL ist. Praktisch, aber überraschend. Und AVG(spalte) ignoriert NULL-Zeilen komplett: Der Nenner ist dann COUNT(spalte) und nicht COUNT(*). Wenn fehlende Werte als 0 zählen sollen, musst du das mit COALESCE ausdrücklich sagen.

    3. Filtere so früh wie möglich. Inhaltlich kannst du eine Zeilenbedingung auch in HAVING unterbringen, wenn die Spalte in GROUP BY steht – sauber ist es trotzdem nicht. WHERE reduziert die Datenmenge, bevor gruppiert wird, und kann Indizes nutzen. HAVING arbeitet auf dem bereits berechneten Zwischenergebnis. Bei großen Tabellen ist das der Unterschied zwischen einer Sekunde und einer Minute.

    4. Als Ausblick, falls es im Kurs noch kommt: Wenn du Einzelzeilen und eine Kennzahl gleichzeitig brauchst („jeder Mitarbeiter mit dem Durchschnittsgehalt seiner Abteilung daneben“), ist GROUP BY das falsche Werkzeug, weil es die Zeilen zusammenfasst. Dafür gibt es Fensterfunktionen wie AVG(gehalt) OVER (PARTITION BY abteilung) – sie rechnen dieselbe Kennzahl, behalten aber alle Zeilen. Das ist ein sehr guter Punkt für eine mündliche Prüfung, weil ihn erfahrungsgemäß kaum jemand nennt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!

Benutzerkonto erstellen Anmelden

Letzte Beiträge

    1. Thema
    2. Antworten
    3. Letzte Antwort
    1. GROUP BY und HAVING – wann filtere ich mit WHERE und wann erst nach der Gruppierung? 2

      • AnnaWInf
      • 22. August 2026 um 15:45
      • Wirtschaftsinformatik
      • AnnaWInf
      • 23. August 2026 um 08:25
    2. Antworten
      2
      Zugriffe
      5
      2
    3. DanielIT

      23. August 2026 um 08:25
    1. Von der 2. zur 3. Normalform – was genau ist eine transitive Abhängigkeit? 2

      • OleNordwind
      • 3. August 2026 um 15:55
      • Wirtschaftsinformatik
      • OleNordwind
      • 3. August 2026 um 20:40
    2. Antworten
      2
      Zugriffe
      98
      2
    3. DanielIT

      3. August 2026 um 20:40
    1. ER-Modell: Wie werden 1:n und n:m eigentlich zu echten Tabellen – und wo landet der Fremdschlüssel? 3

      • RobertM
      • 1. August 2026 um 15:40
      • Wirtschaftsinformatik
      • RobertM
      • 3. August 2026 um 06:25
    2. Antworten
      3
      Zugriffe
      142
      3
    3. Tobi89

      3. August 2026 um 06:25
    1. IaaS, PaaS, SaaS – wo genau hört meine Verantwortung auf und wo fängt die des Anbieters an? 2

      • AnnaWInf
      • 30. Juli 2026 um 16:50
      • Wirtschaftsinformatik
      • AnnaWInf
      • 31. Juli 2026 um 06:20
    2. Antworten
      2
      Zugriffe
      126
      2
    3. Tobi89

      31. Juli 2026 um 06:20
    1. Symmetrische vs. asymmetrische Verschlüsselung – wofür braucht man beides, wenn asymmetrisch doch sicherer klingt? 3

      • OleNordwind
      • 27. Juli 2026 um 15:35
      • Wirtschaftsinformatik
      • OleNordwind
      • 28. Juli 2026 um 07:05
    2. Antworten
      3
      Zugriffe
      111
      3
    3. Tobi89

      28. Juli 2026 um 07:05
    1. Datenbank-Trigger – was ist das, und wann sollte ich einen einsetzen (und wann besser nicht)? 2

      • AnnaWInf
      • 25. Juli 2026 um 16:55
      • Wirtschaftsinformatik
      • AnnaWInf
      • 26. Juli 2026 um 07:00
    2. Antworten
      2
      Zugriffe
      113
      2
    3. Tobi89

      26. Juli 2026 um 07:00
    1. Deadlock in der Datenbank – wie entsteht der, und wie löst das DBMS ihn auf? 2

      • AnnaWInf
      • 23. Juli 2026 um 15:30
      • Wirtschaftsinformatik
      • AnnaWInf
      • 23. Juli 2026 um 19:40
    2. Antworten
      2
      Zugriffe
      108
      2
    3. Tobi89

      23. Juli 2026 um 19:40
    1. SQL: Unterabfrage (Subquery) vs. JOIN – wann brauche ich welche? 2

      • AnnaWInf
      • 22. Juli 2026 um 16:50
      • Wirtschaftsinformatik
      • AnnaWInf
      • 22. Juli 2026 um 21:20
    2. Antworten
      2
      Zugriffe
      129
      2
    3. Tobi89

      22. Juli 2026 um 21:20
    1. Von der 1. zur 2. Normalform – woran erkenne ich eine partielle Abhängigkeit? 3

      • AnnaWInf
      • 20. Juli 2026 um 16:45
      • Wirtschaftsinformatik
      • AnnaWInf
      • 22. Juli 2026 um 07:15
    2. Antworten
      3
      Zugriffe
      132
      3
    3. DanielIT

      22. Juli 2026 um 07:15
    1. SQL-Views – wozu brauche ich eine „virtuelle Tabelle“, wenn ich die Abfrage auch direkt schreiben kann? 2

      • AnnaWInf
      • 18. Juli 2026 um 14:20
      • Wirtschaftsinformatik
      • AnnaWInf
      • 18. Juli 2026 um 17:10
    2. Antworten
      2
      Zugriffe
      110
      2
    3. Tobi89

      18. Juli 2026 um 17:10
Anzeige
SGD Fernstudium – WM-Vorteile 2026: 10 % auf über 100 Kurse

Registrierung

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!

Benutzerkonto erstellen

Lernhilfen & Ratgeber

Geprüfte Wegweiser für Studium & Fernstudium:

  • 🎓 BWL-Fernstudium: Anbieter-Vergleich 2026
  • 📝 Einsendeaufgaben-Hilfe (SGD, ILS & Co.)
  • 🏫 Fernstudium-Anbieter & Erfahrungen
  • 📚 Studium Allgemein
  • ❓ Häufige Fragen: Fernstudium
Anzeige · Fernstudium-Anbieter
Hochschule FreseniusTIPPInfomaterial zu Fernstudien kostenlos anfordernSGD – Studiengemeinschaft DarmstadtTraditionsreiche Fernschule – 4 Wochen kostenlos testenILS FernschuleDeutschlands größte Fernschule – 4 Wochen gratis testenWilhelm Büchner HochschuleTechnik-Fernstudium, staatlich anerkanntFernakademieGeprüftes Fernstudium, jederzeit startenEHiP100 % digitales Studium, auch ohne Abitur
Partnerlinks – für dich kostenlos.
Anzeige · Technik & Studium
Wilhelm Büchner HochschuleTechnik-Fernstudium (Informatik, Ingenieurwesen)CyberportLaptops & Technik fürs Studium
Partnerlinks.

Beliebte Studienthemen

BWL VWL Rechnungswesen Steuerlehre Mathe & Statistik Wirtschaftsrecht Wirtschaftsinformatik Wirtschaftswissenschaften Einsendeaufgaben Fernstudium-Anbieter

Letzte Beiträge

  1. GROUP BY und HAVING – wann filtere ich mit WHERE und wann erst nach der Gruppierung?

    DanielIT
    23. August 2026 um 08:25
  2. Von der 2. zur 3. Normalform – was genau ist eine transitive Abhängigkeit?

    DanielIT
    3. August 2026 um 20:40
  3. ER-Modell: Wie werden 1:n und n:m eigentlich zu echten Tabellen – und wo landet der Fremdschlüssel?

    Tobi89
    3. August 2026 um 06:25
  4. IaaS, PaaS, SaaS – wo genau hört meine Verantwortung auf und wo fängt die des Anbieters an?

    Tobi89
    31. Juli 2026 um 06:20
  5. Symmetrische vs. asymmetrische Verschlüsselung – wofür braucht man beides, wenn asymmetrisch doch sicherer klingt?

    Tobi89
    28. Juli 2026 um 07:05
Anzeige · Studentenrabatt
📰 Studenten lesen billigerZeitungs- & Zeitschriften-Abos für Studierende – bis −75 %. SPIEGEL, DIE ZEIT, Handelsblatt, Wirtschaftswoche & Über 1.000 Titel.Zu den Studenten-Abos →
Partnerlink – für dich kostenlos.

Statistiken

Themen
59.187
Beiträge
114.176
Bilder
1
Videos
0
Mitglieder
37.064
Meiste Benutzer online
17.968
Neuestes Mitglied
sheblue125

Benutzer online in diesem Thema

  • 2 Besucher
  1. Impressum
    1. Datenschutzerklärung
    2. Verhaltenskodex
      1. Learn to Post
  2. Mediadaten
  3. Kontakt
  4. Presse

Über Study-Board.de

Study-Board.de ist eine der größten deutschen Communities rund ums Studium – mit über 37.000 Mitgliedern und mehr als 112.000 Beiträgen. Hier findest du Hilfe bei Einsendeaufgaben (SGD, ILS & Co.), verständliche Erklärungen zu BWL- und VWL-Fachbegriffen, Skripte, Klausurtipps und echte Erfahrungen zu Fernstudium-Anbietern wie IU, AKAD und Euro-FH.

Forum, Ratgeber und Linkdatenbank – Lernen, Austausch und gegenseitige Hilfe an einem Ort. Unabhängig und von Studierenden für Studierende.

Community-Software: WoltLab Suite™