Voeg een windowfunctie toe
Fantastisch! Je hebt nu een resultaatset die de wedstrijddatum, thuisploeg, uitploeg en de gescoorde goals per team ophaalt. Er is nog één onderdeel van de vraag over: hoe hard verloor Manchester United in elke wedstrijd?
Om dit te bepalen, voegen we een windowfunctie toe aan de hoofdquery die wedstrijden rangschikt op de absolute waarde van het verschil tussen home_goal en away_goal. Zo kun je het verschil in scores direct vergelijken zonder rekening te houden met de vraag of Manchester United thuis of uit speelde!
De vergelijking is al voor je ingevuld — je hoeft alleen de windowfunctie correct af te ronden!
Deze oefening maakt deel uit van de cursus
Gegevens manipuleren in SQL
Oefeninstructies
- Zet de CTE’s op zodat de thuis- en uitploeg elk een naam, ID en score krijgen.
- Selecteer in de hoofdquery de
date,home team name,away team name,home goalsenaway goals. - Rangschik de wedstrijden en sorteer op het verschil in scores in aflopende volgorde.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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'));