メインコンテンツまでスキップ
バージョン: 4.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など)、それらは同じランクを受け取りますが、これにより後続のランキングにギャップが生じます。

このページでは