DENSE_RANK

说明

计算一组值的排名,排名的值连续。

语法

dense_rank ::=

参数

query_partition_clause

一个分区语句。

order_by_clause

一个排序语句。

返回值

行的排名。

注解

返回的排名是从1开始的连续整数,排名的最大值是查询返回的唯一值的个数。排名不会产生跳跃的值,值相等的行排名相同。

示例

示例1: 计算排名

--  清理环境
DROP TABLE tab1 CASCADE;

--  创建表并插入数据
create table tab1(id INT, a INT, b INT);

INSERT INTO tab1 VALUES(1, 21, 55);
INSERT INTO tab1 VALUES(2, 21, 56);
INSERT INTO tab1 VALUES(3, 21, 48);
INSERT INTO tab1 VALUES(4, 22, 70);
INSERT INTO tab1 VALUES(5, 22, 65);
INSERT INTO tab1 VALUES(6, 11, 40);
INSERT INTO tab1 VALUES(7, 11, 43);
INSERT INTO tab1 VALUES(8, 31, 77);
INSERT INTO tab1 VALUES(9, 32, 80);


SELECT * FROM tab1 ORDER BY id;
ID(int)      |A(int)      |B(int)      |
-------------------------------------
1            |21          |55          |
-------------------------------------
2            |21          |56          |
-------------------------------------
3            |21          |48          |
-------------------------------------
4            |22          |70          |
-------------------------------------
5            |22          |65          |
-------------------------------------
6            |11          |40          |
-------------------------------------
7            |11          |43          |
-------------------------------------
8            |31          |77          |
-------------------------------------
9            |32          |80          |
总数目:9


--  计算排名
SELECT id, a, b, DENSE_RANK() OVER (ORDER BY a) FROM tab1 ORDER BY id;
ID(int)      |A(int)      |B(int)      |DENSE_RANK(bigint)      |
-------------------------------------------------------------
1            |21          |55          |2                       |
-------------------------------------------------------------
2            |21          |56          |2                       |
-------------------------------------------------------------
3            |21          |48          |2                       |
-------------------------------------------------------------
4            |22          |70          |3                       |
-------------------------------------------------------------
5            |22          |65          |3                       |
-------------------------------------------------------------
6            |11          |40          |1                       |
-------------------------------------------------------------
7            |11          |43          |1                       |
-------------------------------------------------------------
8            |31          |77          |4                       |
-------------------------------------------------------------
9            |32          |80          |5                       |
总数目:9

--  删除表
DROP TABLE tab1;