Hinzufügen einer Fensterfunktion
Klasse! Du hast jetzt eine Ergebnismenge, die das Datum des Spiels, die Heimmannschaft, die Auswärtsmannschaft und die von jeder Mannschaft erzielten Tore abfragt. Bleibt noch ein letzter Teil der Frage: Wie hoch war die Niederlage von Manchester United in jedem Spiel?
Um dies zu ermitteln, fügen wir der Hauptabfrage eine Fensterfunktion hinzu, die die Spiele nach dem absoluten Wert der Differenz zwischen home_goal
und away_goal
sortiert. So können wir den Unterschied in der Toranzahl direkt vergleichen, ohne zu berücksichtigen, ob Manchester United als Heim- oder als Auswärtsteam gespielt hat.
Die Gleichung ist schon vollständig – du musst nur noch die Fensterfunktion richtig ausfüllen!
Diese Übung ist Teil des Kurses
Datenbearbeitung in SQL
Anleitung zur Übung
- Richte die CTEs so ein, dass das Heim- und das Auswärtsteam jeweils einen Namen, eine ID und einen Punktestand haben, die ihnen zugeordnet sind.
- Wähle in der Hauptabfrage das Datum, den Namen der Heimmannschaft, den Namen der Auswärtsmannschaft sowie die erzielten Heim- und Auswärtstore aus.
- Ordne die Spiele nach der Differenz der Tore in absteigender Reihenfolge.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
-- Set up the home team CTE
___ ___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
WHEN m.home_goal < m.away_goal THEN 'MU Loss'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
WHEN m.home_goal < m.away_goal THEN 'MU Win'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select columns and and rank the matches by goal difference
SELECT DISTINCT
___,
___.___ AS home_team,
___.___ AS away_team,
m.home_goal, m.away_goal,
___() ___(___ ___ ABS(home_goal - away_goal) ___) as match_rank
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
AND ((home.team_long_name = 'Manchester United' AND home.outcome = 'MU Loss')
OR (away.team_long_name = 'Manchester United' AND away.outcome = 'MU Loss'));