Die Aggregatsfunktionen sind sehr praktisch, um Informationen aus der Datenbank auszuwerten. Nun kann es jedoch sein, dass man nicht nur die Informationen einer Gruppe von Informationen auswerten möchte, sondern von allen Gruppen eines Typs. Dafür können wir die Zeilen der Datenbank gruppieren.
Beispiel: Zähle zu allen Spielern, wie viele Spieler aus welchem Land kommen.
SELECT Land, COUNT(Spieler_ID)
FROM Spieler
WHERE 1=1
GROUP BY Land
Anschließend könnte man das Ergebnis noch absteigend sortieren:
ORDER BY COUNT(Spieler_ID) DESC
Aggregatsfunktionen können auch auf jeweils eine Gruppe von Daten in der Datenbank gleichzeitig angewendet werden. Wir verwenden dafür den Befehl
Merksatz 2.3.4.1GROUP BY Spalte.
Möchte man hierbei die Ergebnisse weiter reduzieren, kann man noch eine Bedingung an die Gruppierung stellen.
Beispiel: Zähle zu allen Spielern, wie viele Spieler aus welchem Land kommen. Gib nur die Länder aus, aus dem mindestens 10 Spieler kommen.
SELECT Land, COUNT(Spieler_ID)
FROM Spieler
WHERE 1=1
GROUP BY Land ORDER BY COUNT(Spieler_ID)
HAVING COUNT(Spieler_ID)>9
Möchte man die Ergebnisse einer Gruppierung filtern, kann man dies mit
Merksatz 2.3.4.2HAVING Zeilenbedingungangeben.
Aufgabe 1:
Nutze für alle Aufgaben die Seite https://dbup2date.uni-bayreuth.de/bundesliga.html. Schreibe je die Abfrage auf (nicht das Ergebnis).
Bestimme welche Trikotnummer bisher am meisten Tore geschossen hat.
Aufgabe 2:
Wie viele Vereine spielen in den drei Liegen?
Aufgabe 3:
An welchem Spieltag hat am öftesten die Heimmannschaft gewonnen?
Aufgabe 4:
Um wie viel Uhr werden die meisten Tore geschossen?
Aufgabe 5:
Welcher Verein hat bisher die meisten Tore erzielt? (Hinweis: Zwei Abfragen.)
Aufgabe 6:
Finde für jede Spieltag heraus, wie viele Tore im torreichsten Spiel gefallen sind.
Lösungen der Aufgaben (nur für Abonnenten):
Hier findest du alle Lösungen der Aufgaben dieses Kapitels.