OVER – immer der Rangfolge nach
Mit Fensterfunktionen kannst du eine Rangfolge (RANK) von Informationen anhand einer beliebigen Variable erstellen, die du zum Sortieren deiner Daten verwenden möchtest. Beim Definieren musst du angeben, welche Spalte/Berechnung du zum Erstellen deiner Rangfolge verwenden möchtest. Dazu fügst du eine ORDER BY-Klausel in die OVER()-Klausel ein. Nachfolgend ein Beispiel:
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
In dieser Übung erstellst du einen Datensatz mit Spielen, die danach geordnet sind, welche Ligen im Durchschnitt die meisten Tore in einem Spiel schießen.
Diese Übung ist Teil des Kurses
Datenbearbeitung in SQL
Anleitung zur Übung
- Wähle den Namen der Liga und die durchschnittliche Gesamtzahl der geschossenen Tore von
leagueundmatchmitSELECTaus. - Schließe die Fensterfunktion ab, damit sie die Rangfolge der durchschnittlichen Tore in allen Ligen in der Datenbank über
RANK()berechnet. - Ordne den Rang nach (
OVER) der durchschnittlichen Gesamtzahl der Heim- und Gasttore.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
SELECT
-- Select the league name and average goals scored
___ AS league,
___(___ + ___.away_goal) AS avg_goals,
-- Rank each league over the average goals
___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;