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