始める無料で始める

ウィンドウ関数を追加する

素晴らしいです!試合日、ホームチーム、アウェイチーム、そして各チームの得点を取得する結果セットが完成しました。残る最後の要素は、各試合でマンチェスター・ユナイテッドは、どれほどの大敗を喫したか という点です。

これを調べるためには、メインクエリにウィンドウ関数を追加し、home_goalaway_goal の差の絶対値を使って試合をランク付けします。こうすることで、マンチェスター・ユナイテッドがホームとアウェイのどちらでプレーしたのかを気にせずに、試合の得点差を直接比較できます。

計算式はすでに完成しています。あとはウィンドウ関数を正しく完成させるだけです!

この演習はコースの一部です

SQL のデータ操作

コースを見る

演習の手順

  • ホームチームとアウェイチームそれぞれの、チーム名・ID・得点が対応するように CTE を設定してください。
  • メインクエリで、datehome team nameaway team namehome goalsaway goalsを選択してください。
  • 得点差を基に、試合をランク付けし降順に並べ替えてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

-- 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'));
コードを編集して実行