SQL DENSE_RANK 関数

DENSE_RANKは順位を付けるSQL関数である。順位なので、同じ値には同じ順位が付けられる。同じ順位が複数あった場合でも、その後に順位は飛ばされない。

DENSE_RANK
DBMS DENSE_RANK
MySQL
Oracle
PostgreSQL
SQL Server

構文

DENSE_RANK() OVER(ORDER BY col [,col...])
DENSE_RANK() OVER(PARTITION BY col [,col...] ORDER BY col [,col...])

DENSE_RANK関数を使ったSQLのサンプルを示す。

SELECT DENSE_RANK() OVER(ORDER BY sal), sal FROM emp

RANKとDENSE_RANKの違い

RANKとDENSE_RANKは共に順位をつける分析関数であるが、値が重複するときの順位のつけかたが異なる。

SELECT sal,
  RANK()       OVER(ORDER BY sal),
  DENSE_RANK() OVER(ORDER BY sal)
FROM emp
RANKとDENSE_RANKの違い
sal RANK DENSE_RANK
800 1 1
950 2 2
1250 3 3
1250 3 3
1300 5 4
1500 6 5