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

DENSE_RANK

説明

DENSE_RANK() は、グループ内でランキングを計算するために使用されるウィンドウ関数です。RANK() とは異なり、DENSE_RANK() はギャップのない連続したランキングを返します。ランキング値は 1 から始まり、順次増加します。同一の値がある場合、それらは同じランクを受け取ります。

構文

DENSE_RANK()

戻り値

1から始まるBIGINT型のランキング値を返します。

セットアップ — int_tテーブルを作成し、例で使用する行を読み込みます:

CREATE TABLE int_t (x INT, y INT)
DISTRIBUTED BY HASH(x) BUCKETS 1
PROPERTIES ("replication_num" = "1");

INSERT INTO int_t VALUES
(1, 1), (1, 2), (1, 2),
(2, 1), (2, 2), (2, 3),
(3, 1), (3, 1), (3, 2);
select x, y, dense_rank() over(partition by x order by y) as rank from int_t;

パーティション内の同一の値は同じランクを受け取り、ランクは連続します(ギャップなし — これがDENSE_RANKRANKの違いです):

+------+------+------+
| x | y | rank |
+------+------+------+
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 2 | 2 |
| 2 | 1 | 1 |
| 2 | 2 | 2 |
| 2 | 3 | 3 |
| 3 | 1 | 1 |
| 3 | 1 | 1 |
| 3 | 2 | 2 |
+------+------+------+
このページでは