【SQL】RANKでのレコード順位付け

SQL
※本ページにはプロモーションが含まれます
※本ページにはプロモーションが含まれます
スポンサーリンク

RANKでの順位付けはじめに

SQLのRANK関数は、ウィンドウ関数の1つであり、行を順位付けするための関数です。
行の順位は、特定の順序で行が並べられたときの順位を示します。

こちらについて解説いたします。

RANKの使い方

RANKの基本構文

RANK関数は一般的に次のような構文を持ちます。

RANK() OVER (PARTITION BY partition_expression ORDER BY order_expression)

ここで:

  • partition_expressionは、行を分割するための基準を指定します。これにより、複数のグループに分割された行に対して順位が付けられます。省略可能です。
  • order_expressionは、行の順位を決定するための順序付けの基準を指定します。これにより、順位が決定されます。同じ値を持つ行が複数ある場合、同じ順位が割り当てられます。

RANKの具体例

想定するテーブル構造:

CREATE TABLE sales (
sale_id INT PRIMARY KEY,
amount DECIMAL(10, 2),
department_id INT
);

INSERT INTO sales (sale_id, amount, department_id) VALUES
(1, 100.50, 1),
(2, 200.75, 1),
(3, 150.25, 2),
(4, 180.00, 2),
(5, 120.90, 3),
(6, 220.45, 3)

部門ごとの売上高に基づいてランキングを付けるクエリ:

SELECT
sale_id,
amount,
department_id,
RANK() OVER (PARTITION BY department_id ORDER BY amount DESC) AS department_sales_rank
FROM
sales;

このクエリは、salesテーブルから売上データを取得し、department_idごとに売上高に基づいてランキングを付けます。結果は各売上レコードごとに、その部門内での売上高のランキングを示す department_sales_rank 列が追加された形で返されます。

以下の結果が返されます。

| sale_id | amount | department_id | department_sales_rank |
|---------|--------|---------------|----------------------|
| 6       | 220.45 | 3             | 1                    |
| 3       | 150.25 | 2             | 1                    |
| 4       | 180.00 | 2             | 2                    |
| 2       | 200.75 | 1             | 1                    |
| 1       | 100.50 | 1             | 2                    |
| 5       | 120.90 | 3             | 2                    |

RANK関数は、行の順位付けやランキングの表示が必要な場合に便利です。例えば、上位N件や下位N件を抽出する、ランキングを表示する、または各グループ内のランクを計算するなどの用途に使用されます。

プログラムの環境構築からわからない、、」「データサイエンティストになるには?」など自己学習に不安がありましたら、以下のスクールのご活用をご検討ください!

Tech AcademyCode Lessonレバテック カレッジ
現役エンジニアから学べるオンラインに特化したプログラミングスクールです。転職の支援はもちろん、副業に活かせるスキルの習得から、副業の仕事紹介まで寄り添います。「未経験から独学でプロを目指す」というコンセプトのもと、実践的なコーディング学習ができるプログラミング学習サービスです。新卒でITエンジニアになりたい学生の就職活動までサポートする、大学生/大学院生向けプログラミングスクールです。
コース例
・Pythonコース

・AIコース
・データサイエンスコース
★提供スキル
HTML, CSS, JavaScript(DOM), React, Vue, TypeScript, Java, PHP, Python, SQL
★提供スキル
PHP中心にGit, AWS, MySQL, HTML, CSS, JavaScriptも提供

RANKでの順位付けまとめ

以上がRANK関数での順位付けの解説となります。

指定した切り口・指定した順位付けの基準でランキングを行うことができます。
ケースに応じてご活用いただければと思います。

SQL関連記事

そのほか、SQL関連記事をこちらにまとめておりますのでご参考ください。
Coffee Tech Blog SQL関連記事

もしIT業界への転職でお困りでしたら、下記サービスのご活用をご検討ください!
私は転職の際にGeeklyを活用させて頂き、ご縁を頂くことができました。

Geekly転職ドラフト
IT・WEB・ソーシャルゲーム業界を専門とした転職支援サービスです。ギークリー独占の求人案件も扱っており、大手サービスに劣らないサービス力を誇ります。転職ドラフトは年収UP率94.3% / 平均年収UP額148.4万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け転職サービスです。毎月1回開催され、IT/Web系企業を中心に、厳選された約240社からダイレクトスカウトを受け取ることができます。

参考になれば幸いです☕

コメント

タイトルとURLをコピーしました