CommencerCommencer gratuitement

Ajouter une fonction de fenêtre

Bravo ! Vous disposez maintenant d’un ensemble de résultats qui récupère la date du match, l’équipe qui joue à domicile, l’équipe qui joue à l’extérieur ainsi que les buts marqués par chaque équipe. Il vous reste un dernier élément à traiter dans la question : de combien de buts Manchester United a-t-il perdu chaque match ?

Pour ce faire, ajoutons à la requête principale une fonction de fenêtre qui classe les matchs en fonction de la valeur absolue de la différence entre home_goal et away_goal. Cela nous permet de comparer directement la différence de score sans avoir à tenir compte du fait que Manchester United a joué à domicile ou à l’extérieur.

L’équation est complète pour vous. Il ne vous reste plus qu’à compléter correctement la fonction de fenêtre !

Cet exercice fait partie du cours

Manipulation de données en SQL

Afficher le cours

Instructions

  • Configurez les CTE de manière à ce que l’équipe locale et l’équipe à l’extérieur aient chacune un nom, un identifiant et un score qui leur soient associés.
  • Sélectionnez la date, le nom de l’équipe jouant à domicile, le nom de l’équipe jouant à l’extérieur, le nombre de buts marqués à domicile et le nombre de buts marqués à l’extérieur dans la requête principale.
  • Classez les matchs et triez-les par ordre décroissant selon la différence de score.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

-- 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'));
Modifier et exécuter le code