見出し画像

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 |
+-------+-------+---------+

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?