ROW_NUMBER( )、RANK( ) 和 DENSE_RANK( ) 是 SQL 中的窗口函数,用于为分区或者结果集中的每一行分配一个特定的值,通常基于某个排序顺序。
ROW_NUMBER( ) 为每一行分配唯一的连续的整数,按照指定的顺序进行排序,从 1 开始生成行号,如图所示
该函数可以按照分组方式指定字段进行排序,其语法表达如下:
partition by:分组
order by:排序
RANK( ) 为每一行分配一个整数,表示其在排序中的相对位置,假若存在并列的数据,RANK( )的排名是不连续的,跳跃的,如下所示
该函数可以按照分组方式指定字段进行排序,其语法表达如下:
partition by:分组
order by:排序
DENSE_RANK( ) 与RANK( ) 类似,但不会跳过数字,假若存在并列的数据,DENSE_RANK( )的排名也是连续的,如下所示
该函数可以按照分组方式指定字段进行排序,其语法表达如下:
partition by:分组