关于 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: 如果有两个第二名,后面就从第四名开始 。。。





请使用浏览器的分享功能分享到微信等