有些情况下,有对查询结果有增加一列序列号的需求,在SQL中的使用方式,现有RANK(),DENSE_RANK(),ROW_NUMBER()三种方式可以提供,下面对这三种方式的结果详细说明:
三种方式参数一样,说明:
partition by 分组排序,可不写
order by 排序标准,必须写
SELECT name,gender,fenshu,
RANK() over(partition by gender order by fenshu) as rank,
DENSE_RANK() over(partition by gender order by fenshu) as dense_rank,
ROW_NUMBER() over(partition by gender order by fenshu) as row_number
FROM chengjibiao
结果如下图:按性别分组,组内按分数排序
重点在这里:
从查询结果中很明显的发现规律:
RANK() 发生不持续的编号 例如数据值 1,2,2,3查询结果的编号将是1,2,2,4
DENSE_RANK() 发生持续的编号 例如数据值 1,2,2,3 查询结果的编号将是1,2,2,3
ROW_NUMBER() 发生持续的编号(不重复) 例如数据值 1,2,2,3查询结果的编号将是1,2,3,4
原创文章如转载请注明:
你必须 登录后 才能对文章进行评论!