Dodaj funkcję okna
Świetna robota! Masz już zestaw wyników zawierający datę meczu, drużynę gospodarzy, drużynę gości oraz liczbę bramek zdobytych przez każdą z nich. Pozostał jeszcze jeden element odpowiedzi na pytanie – jak dotkliwa była każda z porażek Manchesteru United?
Aby to ustalić, dodaj do głównego zapytania funkcję okna, która uszereguje mecze według wartości bezwzględnej różnicy między home_goal a away_goal. Dzięki temu możesz bezpośrednio porównać różnicę wyników, niezależnie od tego, czy Manchester United grał jako gospodarz, czy gość!
Równanie jest już gotowe – wystarczy, że poprawnie uzupełnisz funkcję okna!
To ćwiczenie jest częścią kursu
Data Manipulation in SQL
Instrukcje do ćwiczenia
- Skonfiguruj CTE tak, aby każda drużyna – gospodarze i goście – miała przypisaną nazwę, identyfikator oraz liczbę zdobytych bramek.
- W głównym zapytaniu wybierz:
date, nazwę drużyny gospodarzy, nazwę drużyny gości, liczbę bramek gospodarzy oraz liczbę bramek gości. - Uszereguj mecze, sortując po różnicy wyników w kolejności malejącej.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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'));