Die CTEs zusammenstellen
Nachdem du nun die beiden Unterabfragen zur Identifizierung der Heim- und Auswärtsgegner erstellt hast, ist es an der Zeit, deine Abfrage mit den home
- und away
-Unterabfragen als allgemeine Tabellenausdrücke (CTEs) umzugestalten. Du wirst feststellen, dass die Hauptabfrage eine SELECT DISTINCT
-Anweisung enthält. Wenn du nicht nur die DISTINCT
Spiele identifizierst, könntest du für jedes gespielte Spiel einen doppelten Datensatz erhalten.
Baue die Abfrage weiter aus, um alle Spiele von Manchester United in der Saison 2014/2015 zu extrahieren.
Diese Übung ist Teil des Kurses
Datenbearbeitung in SQL
Anleitung zur Übung
- Deklariere die CTEs
home
undaway
vor deiner Hauptabfrage. - Verbinde deine CTEs mit Hilfe von
LEFT JOIN
mit der Spieltabelle. - Wähle die relevanten Daten aus den CTEs in der Hauptabfrage aus.
- Wähle das Datum aus
match
, die Mannschaftsnamen aus den CTEs und die Heim-/Auswärtstore ausmatch
in der Hauptabfrage.
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 team names, the date and goals
SELECT DISTINCT
___,
___.___ AS home_team,
___.___ AS away_team,
___,
m.away_goal
-- 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'
OR away.team_long_name = 'Manchester United');