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件を抽出する、ランキングを表示する、または各グループ内のランクを計算するなどの用途に使用されます。
「プログラムの環境構築からわからない、、」「データサイエンティストになるには?」など自己学習に不安がありましたら、以下のスクールのご活用をご検討ください!
RANKでの順位付けまとめ
以上がRANK関数での順位付けの解説となります。
指定した切り口・指定した順位付けの基準でランキングを行うことができます。
ケースに応じてご活用いただければと思います。
SQL関連記事
そのほか、SQL関連記事をこちらにまとめておりますのでご参考ください。
> Coffee Tech Blog SQL関連記事
もしIT業界への転職でお困りでしたら、下記サービスのご活用をご検討ください!
私は転職の際にGeeklyを活用させて頂き、ご縁を頂くことができました。
参考になれば幸いです☕
コメント