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