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
    56
    • 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
    Hochschule FreseniusBerufsbegleitend studieren – Infomaterial kostenlos anfordern.
    Mehr erfahren →
  • Tobi89
    WiInf · IT
    Beiträge
    55
    • 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
    64
    • 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
    57
    • 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. Vendor Lock-in bei Cloud-Diensten – wie vermeide ich die Abhängigkeit? 2

      • AnnaWInf
      • 24. Oktober 2026 um 12:39
      • Wirtschaftsinformatik
      • AnnaWInf
      • 24. Oktober 2026 um 17:53
    2. Antworten
      2
      Zugriffe
      82
      2
    3. MarkusWB

      24. Oktober 2026 um 17:53
    1. Prozessmodellierung mit BPMN – wie unterscheide ich Gateway-Typen sauber? 2

      • MarkusWB
      • 23. Oktober 2026 um 18:13
      • Wirtschaftsinformatik
      • MarkusWB
      • 23. Oktober 2026 um 23:01
    2. Antworten
      2
      Zugriffe
      83
      2
    3. DanielIT

      23. Oktober 2026 um 23:01
    1. Testdatenbank vs. Produktivsystem – wie trenne ich das sauber im Projekt? 2

      • AnnaWInf
      • 21. Oktober 2026 um 16:43
      • Wirtschaftsinformatik
      • AnnaWInf
      • 21. Oktober 2026 um 20:45
    2. Antworten
      2
      Zugriffe
      100
      2
    3. Tobi89

      21. Oktober 2026 um 20:45
    1. Lastenheft und Pflichtenheft – wer schreibt eigentlich was? 2

      • AnnaWInf
      • 19. Oktober 2026 um 11:05
      • Wirtschaftsinformatik
      • AnnaWInf
      • 19. Oktober 2026 um 17:50
    2. Antworten
      2
      Zugriffe
      107
      2
    3. Tobi89

      19. Oktober 2026 um 17:50
    1. Microservices oder Monolith – was eignet sich besser für mein Studienprojekt? 3

      • DanielIT
      • 15. Oktober 2026 um 11:12
      • Wirtschaftsinformatik
      • DanielIT
      • 15. Oktober 2026 um 16:53
    2. Antworten
      3
      Zugriffe
      146
      3
    3. MarkusWB

      15. Oktober 2026 um 16:53
    1. DSGVO im Studienprojekt – was muss ich bei selbst erhobenen Umfragedaten beachten? 2

      • AnnaWInf
      • 14. Oktober 2026 um 14:10
      • Wirtschaftsinformatik
      • AnnaWInf
      • 14. Oktober 2026 um 16:48
    2. Antworten
      2
      Zugriffe
      150
      2
    3. Tobi89

      14. Oktober 2026 um 16:48
    1. ER-Diagramm vs. UML-Klassendiagramm – wann nehme ich was? 2

      • AnnaWInf
      • 11. Oktober 2026 um 17:51
      • Wirtschaftsinformatik
      • AnnaWInf
      • 11. Oktober 2026 um 23:07
    2. Antworten
      2
      Zugriffe
      145
      2
    3. Tobi89

      11. Oktober 2026 um 23:07
    1. Cloud Computing: SaaS, PaaS, IaaS – wie unterscheide ich die Modelle in der Klausur? 2

      • MarkusWB
      • 10. Oktober 2026 um 17:58
      • Wirtschaftsinformatik
      • MarkusWB
      • 10. Oktober 2026 um 22:56
    2. Antworten
      2
      Zugriffe
      159
      2
    3. Tobi89

      10. Oktober 2026 um 22:56
    1. Clean Code Prinzipien – lohnt sich der Aufwand im Studienprojekt wirklich? 2

      • MarkusWB
      • 9. Oktober 2026 um 17:11
      • Wirtschaftsinformatik
      • MarkusWB
      • 10. Oktober 2026 um 08:34
    2. Antworten
      2
      Zugriffe
      165
      2
    3. AnnaWInf

      10. Oktober 2026 um 08:34
    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
      178
      2
    3. Tobi89

      6. Oktober 2026 um 18:35
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. Vendor Lock-in bei Cloud-Diensten – wie vermeide ich die Abhängigkeit?

    MarkusWB
    24. Oktober 2026 um 17:53
  2. Prozessmodellierung mit BPMN – wie unterscheide ich Gateway-Typen sauber?

    DanielIT
    23. Oktober 2026 um 23:01
  3. Testdatenbank vs. Produktivsystem – wie trenne ich das sauber im Projekt?

    Tobi89
    21. Oktober 2026 um 20:45
  4. Lastenheft und Pflichtenheft – wer schreibt eigentlich was?

    Tobi89
    19. Oktober 2026 um 17:50
  5. Microservices oder Monolith – was eignet sich besser für mein Studienprojekt?

    MarkusWB
    15. Oktober 2026 um 16:53
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.428
Beiträge
114.984
Bilder
1
Videos
0
Mitglieder
37.088
Meiste Benutzer online
17.968
Neuestes Mitglied
wesleywatson
  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™