Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 goals en away 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'));
Code bewerken en uitvoeren