メインコンテンツまでスキップ
バージョン: 26.x

RANK

説明

RANK()は、順序付けられたデータセット内の値のランクを返すウィンドウ関数です。ランキングは1から開始し、順次増分されます。同一の値が存在する場合、それらは同じランクを受け取りますが、これによりランキングシーケンスにギャップが生じます。例えば、最初の2行がランク1で同順位の場合、次の異なる値はランク3となります(2ではありません)。

構文

RANK()

戻り値

BIGINT型のランク値を返します。同一の値に対しては同じランクを返しますが、シーケンスにギャップを作成します。

SELECT 
department,
employee_name,
salary,
RANK() OVER (
PARTITION BY department
ORDER BY salary DESC
) as salary_rank
FROM employees;
+------------+---------------+--------+-------------+
| department | employee_name | salary | salary_rank |
+------------+---------------+--------+-------------+
| Sales | Alice | 10000 | 1 |
| Sales | Bob | 10000 | 1 |
| Sales | Charlie | 8000 | 3 | -- Note this is 3, not 2
| IT | David | 12000 | 1 |
| IT | Eve | 11000 | 2 |
| IT | Frank | 11000 | 2 |
| IT | Grace | 9000 | 4 | -- Note this is 4, not 3
+------------+---------------+--------+-------------+

この例では、データは部署別に分割され、各部署内で給与によってランク付けされています。同一の給与が発生した場合(AliceとBob、EveとFrankのように)、それらは同じランクを受け取りますが、これにより後続のランキングにギャップが生じます。

このページでは