SQLの「RANK関数」 - レコードの順序付け
RANK関数は、データの順位を付けるために使用されるウィンドウ関数の一つです。特定のカラムの値に基づいて順位を付け、同じ値を持つ行には同じ順位を割り当てます。ランキングや順序付けに使えます。
基本的な構文
RANK()
OVER (
PARTITION BY <partition_column>
ORDER BY <order_column>
)
RANK(): RANK関数を表します
OVER: ウィンドウ関数の開始を示すキーワード
PARTITION BY: データをグループ化するための列を指定します。(各グループは独立してランキングが付けられます)
ORDER BY: 順位を決定するための列(ランキングの基準)を指定します。
RANK関数を使ったクエリの例
以下のテーブルで、スコアの高い順にランキングを付けてみます。
scores
+-------+-------+
| name | score |
+-------+-------+
| Alice | 100 |
| Bob | 90 |
| Carol | 95 |
| David | 90 |
| Emily | 85 |
+-------+-------+
RANK関数を使用したクエリです。スコア(score)の数値が高い順にランキングを付与します。
SELECT
name,
score,
RANK()
OVER (
ORDER BY score DESC
) AS ranking
FROM
scores;
抽出結果です。各行のスコアに基づいてランキングが付けられ、同じスコアを持つ行には同じ順位が割り当てられます。
+-------+-------+---------+
| name | score | ranking |
+-------+-------+---------+
| Alice | 100 | 1 |
| Carol | 95 | 2 |
| Bob | 90 | 3 |
| David | 90 | 3 |
| Emily | 85 | 5 |
+-------+-------+---------+