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...)

sqlserver 分组排序函数row_number、rank、dense_rank

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...)

sqlserver 分组排序函数row_number、rank、dense_rank

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...)

sqlserver 分组排序函数row_number、rank、dense_rank