DENSE_RANKは順位を付けるSQL関数である。順位なので、同じ値には同じ順位が付けられる。同じ順位が複数あった場合でも、その後に順位は飛ばされない。
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は共に順位をつける分析関数であるが、値が重複するときの順位のつけかたが異なる。
SELECT sal,
RANK() OVER(ORDER BY sal),
DENSE_RANK() OVER(ORDER BY sal)
FROM emp
sal | RANK | DENSE_RANK |
---|---|---|
800 | 1 | 1 |
950 | 2 | 2 |
1250 | 3 | 3 |
1250 | 3 | 3 |
1300 | 5 | 4 |
1500 | 6 | 5 |