Inf9 2.3.4 Gruppieren

Zu den Aufgaben

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 GROUP BY Spalte .

Merksatz 2.3.4.1

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 HAVING Zeilenbedingung angeben.

Merksatz 2.3.4.2

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.


Zurück zu Datenbanken

Zurück zur 9.Klasse