Erste SchritteKostenlos loslegen

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

Kurs anzeigen

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'));
Bearbeiten und Ausführen von Code