OVER 句の理解
ウィンドウ関数を使うと、任意の変数を基準にデータを並べ替え、RANK(順位付け)できます。設定する際は、順位を決めるための列や計算式を指定する必要があります。これは OVER() 句の中に ORDER BY 句を記述することで行います。以下に例を示します。
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
この練習では、リーグ別に 1 試合あたりの平均得点を集計し、得点が多い順にランク付けしたデータセットを作成します。
この演習はコースの一部です
SQL のデータ操作
演習の手順
leagueテーブルとmatchテーブルから、リーグ名と平均総得点をSELECTしてください。- データベース内の全リーグを対象に、平均得点の
RANK()を計算するウィンドウ関数を完成させてください。 - Rank
OVERの順位の基準は、ホームとアウェイの合計得点の平均です。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
-- Select the league name and average goals scored
___ AS league,
___(___ + ___.away_goal) AS avg_goals,
-- Rank each league over the average goals
___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;