rank()、dense_rank()、row_number()的区别
1、rank()over()
跳序排序, 数据查出来后的排名顺序为1、2、2、4、5的形式
select id , rank() over( [partition by xxx] order by xx ) "rank" from table;
-- partitoion by 可以是分区或者分组
2、dense_rank()over()
连续排序,数据查出来后的排名顺序为1、2、2、3、4的形式
select id , dense_rank() over( [partition by xxx] order by xx ) "rank" from table;
3、row_number()over()
顺序排序,不管数据中是否存在相同的数值,都是以1,2,3,4,5的顺序排序下去
select id , row_number() over( [partition by xxx] order by xx ) "rank" from table;