Study-Board.de
  1. Magazin
    1. Hochschulen
    2. Häufige Fragen
    3. Infomaterial zum Fernstudium
  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
  • Erledigt
  • AnnaWInf
    WiInf
    Beiträge
    47
    • 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
    FernakademieGeprüfte Fernlehrgänge, jederzeit starten – gratis Infopaket.
    Mehr erfahren →
  • Tobi89
    WiInf · IT
    Beiträge
    47
    • 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
    56
    • 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.

  • KevinFernuni
    FernUni Hagen
    Beiträge
    52
    • 24. August 2026 um 07:35
    • #4

    Danke für die Verarbeitungsreihenfolge, die hat bei mir tatsächlich den Knoten gelöst. Ich hänge noch eine Sache an, die mir bei Einsendeaufgaben und Klausuren mehr geholfen hat als jede Syntaxregel: Aufgabentexte lassen sich fast wörtlich in SQL übersetzen.

    Ich habe mir dafür eine kleine Übersetzungsliste gemacht:

    • „pro Kunde“, „je Abteilung“, „für jede Filiale“ → das ist die Spalte hinter GROUP BY.
    • „Anzahl“, „Summe“, „Durchschnitt“, „höchster“ → die Aggregatfunktion im SELECT.
    • „nur Aufträge aus 2025“ → Bedingung auf einzelne Zeilen, also WHERE.
    • „nur diejenigen Kunden, die mehr als drei Aufträge haben“ → Bedingung auf die fertige Gruppe, also HAVING.
    • „absteigend“, „Top 5“ → ORDER BY … DESC und LIMIT.

    Wenn beides in einer Aufgabe steht – „Anzahl der Aufträge aus 2025 pro Kunde, aber nur Kunden mit mehr als drei Aufträgen“ –, weiß man sofort, dass das Jahr ins WHERE und die Drei ins HAVING gehört. Genau diese Kombination war bei mir in der Klausur die eigentliche Prüfungsfrage.

    Zweiter Tipp: Ich schreibe die Klauseln in der Reihenfolge FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY auf ein Schmierblatt und füge sie dann erst zur fertigen Abfrage zusammen. Klingt umständlich, verhindert aber genau den Fehler, dass man ein COUNT ins WHERE schreibt, weil man mit dem SELECT anfängt.

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. Versionskontrolle vs. Backup – reicht Git allein als Datensicherung für mein Projekt? 2

      • DanielIT
      • 6. Oktober 2026 um 14:36
      • Wirtschaftsinformatik
      • DanielIT
      • 6. Oktober 2026 um 18:35
    2. Antworten
      2
      Zugriffe
      63
      2
    3. Tobi89

      6. Oktober 2026 um 18:35
    1. Scrum Rollen – was genau unterscheidet Product Owner und Scrum Master im Alltag? 3

      • AnnaWInf
      • 1. Oktober 2026 um 11:55
      • Wirtschaftsinformatik
      • AnnaWInf
      • 6. Oktober 2026 um 17:05
    2. Antworten
      3
      Zugriffe
      153
      3
    3. AnnaWInf

      6. Oktober 2026 um 17:05
    1. Datenbank-Index setzen – wann bringt das wirklich etwas, und wann bremst es aus? 2

      • DanielIT
      • 5. Oktober 2026 um 12:55
      • Wirtschaftsinformatik
      • DanielIT
      • 5. Oktober 2026 um 16:01
    2. Antworten
      2
      Zugriffe
      74
      2
    3. Tobi89

      5. Oktober 2026 um 16:01
    1. Normalisierung vs. Denormalisierung – wann nimmt man bewusst Redundanz in Kauf? 2

      • AnnaWInf
      • 3. Oktober 2026 um 15:15
      • Wirtschaftsinformatik
      • AnnaWInf
      • 3. Oktober 2026 um 21:32
    2. Antworten
      2
      Zugriffe
      94
      2
    3. Tobi89

      3. Oktober 2026 um 21:32
    1. SQL Joins – Inner, Left, Right oder Full: wie behalte ich den Überblick? 2

      • MarkusWB
      • 30. September 2026 um 10:05
      • Wirtschaftsinformatik
      • MarkusWB
      • 30. September 2026 um 17:43
    2. Antworten
      2
      Zugriffe
      112
      2
    3. Tobi89

      30. September 2026 um 17:43
    1. REST-API – was bedeutet eigentlich 'zustandslos', und warum ist das so wichtig? 2

      • MarkusWB
      • 29. September 2026 um 15:10
      • Wirtschaftsinformatik
      • MarkusWB
      • 29. September 2026 um 22:20
    2. Antworten
      2
      Zugriffe
      120
      2
    3. Tobi89

      29. September 2026 um 22:20
    1. Scrum oder Wasserfall – wie entscheide ich mich für mein Projekt in der Hausarbeit? 2

      • AnnaWInf
      • 28. September 2026 um 15:07
      • Wirtschaftsinformatik
      • AnnaWInf
      • 28. September 2026 um 20:25
    2. Antworten
      2
      Zugriffe
      118
      2
    3. Tobi89

      28. September 2026 um 20:25
    1. O-Notation: Warum ist O(n log n) so viel besser als O(n²) – und wie lese ich das aus Code ab? 4

      • AnnaWInf
      • 25. September 2026 um 15:20
      • Wirtschaftsinformatik
      • AnnaWInf
      • 28. September 2026 um 18:05
    2. Antworten
      4
      Zugriffe
      175
      4
    3. DanielIT

      28. September 2026 um 18:05
    1. Cookies, Sessions, Tokens – woher weiß eine Webseite eigentlich, dass ich noch eingeloggt bin? 2

      • Sophie99
      • 20. September 2026 um 18:10
      • Wirtschaftsinformatik
      • Sophie99
      • 20. September 2026 um 22:15
    2. Antworten
      2
      Zugriffe
      157
      2
    3. Tobi89

      20. September 2026 um 22:15
    1. Git im Gruppenprojekt: Ständig Merge-Konflikte – wie arbeitet man mit Branches eigentlich richtig? 3

      • MarkusWB
      • 17. September 2026 um 17:15
      • Wirtschaftsinformatik
      • MarkusWB
      • 18. September 2026 um 07:20
    2. Antworten
      3
      Zugriffe
      209
      3
    3. AnnaWInf

      18. September 2026 um 07:20
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
Anzeige · Fernstudium-Anbieter
AKAD UniversityTIPPStaatlich anerkannt · berufsbegleitend · jederzeit startenHochschule FreseniusInfomaterial 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.
Alle Anbieter & Infomaterial →
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
Anzeige · AKAD University
AKAD University – berufsbegleitendes FernstudiumStudiengänge ansehen →
Partnerlink – für dich kostenlos.

Letzte Beiträge

  1. Versionskontrolle vs. Backup – reicht Git allein als Datensicherung für mein Projekt?

    Tobi89
    6. Oktober 2026 um 18:35
  2. Scrum Rollen – was genau unterscheidet Product Owner und Scrum Master im Alltag?

    AnnaWInf
    6. Oktober 2026 um 17:05
  3. Datenbank-Index setzen – wann bringt das wirklich etwas, und wann bremst es aus?

    Tobi89
    5. Oktober 2026 um 16:01
  4. Normalisierung vs. Denormalisierung – wann nimmt man bewusst Redundanz in Kauf?

    Tobi89
    3. Oktober 2026 um 21:32
  5. SQL Joins – Inner, Left, Right oder Full: wie behalte ich den Überblick?

    Tobi89
    30. September 2026 um 17:43
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.
Werbeplatz
Hier könnte Ihre Werbung stehen37.000+ Mitglieder · 112.000+ Beiträge · Zielgruppe BWL & Fernstudium, 95 % DeutschlandWerbung anfragen →
Mediadaten auf Anfrage

Statistiken

Themen
59.411
Beiträge
114.835
Bilder
1
Videos
0
Mitglieder
37.080
Meiste Benutzer online
17.968
Neuestes Mitglied
ThoMue1988

Benutzer online in diesem Thema

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

Ü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.

Cookie-Einstellungen
Community-Software: WoltLab Suite™