SQL中排序函数区别
ROW_NUMBER():排序依据相同时,给出不同前后顺序。
RANK():排序依据相同时,给出相同顺序。
DENSE_RANK():排序依据相同时,给出相同顺序,且稠密排序(序号是连着的,不是跳跃的)。
举例说明:把下列数据按照type的不同进行排序
1、使用ROW_NUMBER()
select *,ROW_NUMBER() over (partition by type order by buy_time) as ranking from paydetail_test_copy1
使用row_number(),即使A类型的7900和7903的购买时间一样,但会给出不同的排序序号。
2、使用RANK()
select *,RANK() over (partition by type order by buy_time) as ranking from paydetail_test_copy1
使用rank(),A类型的7900和7903的购买时间一样,就会给出相同的排序序号。
3、使用DENSE_RANK()
select *,DENSE_RANK() over (partition by type order by buy_time) as ranking from paydetail_test_copy1
dense_rank()又被叫做稠密排序。
使用dense_rank(),A类型的7900和7903的购买时间一样,会给出相同的排序序号。与rank()不同的是,这两个相同序号(即 2)的下一个序号是3,因此“稠密”。