广州飞狐科技有限公司官网
技术文章
2020-12-27 17:33:25

SQL:关于 rank, DENSE_RANK和row_number

分享到:

最近经常用到 rank, DENSE_RANK和row_number,举一个例子说明它们之间的区别


create table employee
(
ID INT NOT NULL,
YEARS INT NOT NULL
);

insert into employee values(1,8);
insert into employee values(2,5);
insert into employee values(3,6);
insert into employee values(4,6);
insert into employee values(5,7);
insert into employee values(6,7);
insert into employee values(7,8);


SELECT id
,years
,RANK() OVER(ORDER BY years) AS rank#
,DENSE_RANK() OVER(ORDER BY years) AS dense#
,ROW_NUMBER() OVER(ORDER BY years) AS row#
FROM employee
ORDER BY years;


这里根据YEARS升序,对于ROW_NUMBER来说,就是1,2,3... 这样的不同的值,代表行号

rank & dense_rank 指的是排名,当有相同的值的时候,那排名就应该相同.

dense_rank: 如果有两个第二名,后面就应该是第三名,这里dense_rank的值做到了连续. 其实从dense的中文含义就能猜出来。

rank: 如果有两个第二名,后面就从第四名开始 。。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/725820/viewspace-2678993/,如需转载,请注明出处,否则将追究法律责任。

上一篇:防删库实用指南 | 只需一步,快速召回被误删的表
下一篇:在线医疗的“盈利病”怎么治?