SELECT分清楚RANK(),DENSE_RANK(),ROW_NUMBER()三个排序的不同

 

有些情况下,有对查询结果有增加一列序列号的需求,在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

RANK()  和 DENSE_RANK() 排序的差异就是排序存在并列的情况下。

 

 

标签:

分类:SERVER | 发布:inzaghi | 评论:0 条 | 发表时间:2016-11-16 16:26
引用:点击这里获取该日志的TrackBack引用地址
上一篇:
下一篇:

发表评论

你必须 登录后 才能对文章进行评论!

Design By Inzaghi | 京ICP备16047555号-1