Grundlagen der Datenbanken
Eine Mitarbeitertabelle (Name, Abteilung, Gehalt) hat 8 Zeilen mit folgenden Gehältern je Abteilung: Vertrieb 320, 280, 350; Entwicklung 400, 310; Verwaltung 260, 300; Planung 330. Wie viele Zeilen liefert SELECT Abteilung, COUNT(*) FROM Mitarbeiter WHERE Gehalt >= 300 GROUP BY Abteilung HAVING COUNT(*) >= 2?
- A2 Zeilen
- B3 Zeilen
- C4 Zeilen
Antwort und Erläuterung anzeigen
Antwort: A. 2 Zeilen
Zuerst behält WHERE nur Zeilen mit einem Gehalt von 300 oder mehr. Beim Vertrieb bleiben zwei Zeilen (320 und 350), bei der Entwicklung zwei (400 und 310), bei der Verwaltung eine (300) und bei der Planung eine (330); 280 im Vertrieb und 260 in der Verwaltung fallen weg. Dann fasst GROUP BY die Zeilen nach Abteilungen zu vier Gruppen mit den Anzahlen Vertrieb 2, Entwicklung 2, Verwaltung 1 und Planung 1 zusammen. Zuletzt behält HAVING COUNT(*) >= 2 nur Gruppen mit zwei oder mehr Zeilen, das Ergebnis sind also 2 Zeilen: Vertrieb und Entwicklung. Ohne WHERE gezählt ergäbe sich Vertrieb 3, Entwicklung 2, Verwaltung 2 und Planung 1, und 3 Zeilen würden HAVING erfüllen. Die Reihenfolge – WHERE wirkt vor der Gruppierung, HAVING danach – bestimmt das Ergebnis.