Ajouter une fonction de fenêtre
Fantastique! Vous avez maintenant un jeu de résultats qui récupère la date du match, l'équipe à domicile, l'équipe visiteuse et les buts marqués par chaque équipe. Il reste une dernière composante à la question — à quel point Manchester United a-t-il perdu à chaque match?
Pour le déterminer, ajoutons une fonction de fenêtre à la requête principale qui classe les matchs selon la valeur absolue de la différence entre home_goal et away_goal. Cela nous permet de comparer directement l'écart de points sans avoir à considérer si Manchester United jouait à domicile ou à l'extérieur!
L'équation est déjà prête pour vous — il ne vous reste qu'à compléter correctement la fonction de fenêtre!
Cette activité fait partie du cours
Manipulation de données en SQL
Instructions de l’exercice
- Configurez les CTE afin que les équipes à domicile et visiteuse aient chacune un nom, un identifiant et un pointage qui leur sont associés.
- Sélectionnez la
date, lenom de l'équipe à domicile, lenom de l'équipe visiteuse, lesbuts à domicileet lesbuts à l'extérieurmarqués dans la requête principale. - Classez les matchs et ordonnez-les selon la différence de pointage en ordre décroissant.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- 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'));