Lägg till en fönsterfunktion
Utmärkt! Nu har du ett resultat som hämtar matchdatumet, hemmalaget, bortalaget och målen som varje lag scored. Det återstår en sista del av frågan – hur stort var Manchester Uniteds förlust i varje match?
För att ta reda på det lägger vi till en fönsterfunktion i huvudfrågan som rangordnar matcherna efter absolutvärdet av skillnaden mellan home_goal och away_goal. Det gör att vi kan jämföra målskillnaden direkt, utan att behöva ta hänsyn till om Manchester United spelade hemma eller borta!
Ekvationen är redan ifylld – det enda du behöver göra är att korrekt slutföra fönsterfunktionen!
Den här övningen är en del av kursen
Datahantering i SQL
Övningsinstruktioner
- Ställ in CTE:erna så att hemmalaget och bortalaget var för sig har ett namn, ett ID och ett resultat kopplade till sig.
- Välj
date,hemmalagetsnamn,bortalagetsnamn,hemmamålochbortamåli huvudfrågan. - Rangordna matcherna och sortera efter målskillnaden i fallande ordning.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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'));