sqlserver 分组排序函数row_number、rank、dense_rank
分组排序函数row_number、rank、dense_rank
1、row_number() over(partition by [分组列] order by [排序列])
select *,row_number() over(partition by SegmentLength order by overdays)num from shield_info_report
over()函数中必须添加排序列,分组列可不添加,下同
row_number()函数会按照排序列依次生成不重复的行号num(1,2,3,4...)
2、rank()over(partition by [分组列] order by [排序列])
select *,rank() over(partition by SegmentLength order by overdaysoverdays) num from shield_info_report
rank()函数将重复的排序列赋予相同的序号,且重复列后的行号会自动加二,行号num为(1,2,2,4...)
3、dense_rank()over(partition by [分组列] order by [排序列])
select *,dense_rank() over(partition by SegmentLength order by overdays ) num from shield_info_report
dense_rank()函数将重复的排序列赋予相同的序号,且重复列后的行号会自动加一,行号num为(1,2,2,3,4...)