新闻资讯

新闻资讯 通知公告

SQL:关于 rank, DENSE_RANK和row_number

编辑:009     时间:2020-03-07

最近经常用到 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/,如需转载,请注明出处,否则将追究法律责任。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐