您的当前位置:首页>全部文章>文章详情

SQL开窗函数-排序:rank、rank_number、dense_rank

欧先生发表于:2023-01-16 15:44:51浏览:637次TAG: #MySql

1、注意:

partition by 相当于 group by 分组的作用,可不加;desc 表示倒序排序,默认是正序

2、RANK()

说明:在进行排序时,如果有相同位次,会赋予与上一个名次相同的名次,并将下一位进行+1排序。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,1,1,4,4,6······

代码示例:对第一次月考班级成绩进行排名 rank() over(partition by order by desc)

select

    calss_name 班级名称

    ,student_name 学生姓名

    ,student_achievement 学生成绩

    ,rank() over(partition by calss_name order by student_achievement desc) rank

from 学生成绩信息表

where 考试类目 = ‘第一次月考’

结果示例:

    班级名称       学生姓名      学生成绩     rank

    大数据二班    常三飞           98              1

    大数据二班    常中新           98              1

    大数据二班    杨    夺           96              3

    大数据二班    欧明健           96              3

    大数据二班    郭志高           95              5

    大数据二班    李绍幸           92              6

3、DENSE_RANK()

说明:在进行排序时,如果有相同位次,会赋予与上一个名次相同的名次,并将下一位进行顺排。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,1,1,2,2,3······

代码示例:对第一次月考班级成绩进行排名 dense_rank() over(partition by order by desc)

select

    calss_name 班级名称

    ,student_name 学生姓名

    ,student_achievement 学生成绩

    ,dense_rank() over(partition by calss_name order by student_achievement desc) d_rank

from 学生成绩信息表

where 考试类目 = ‘第一次月考’

结果示例:

    班级名称       学生姓名      学生成绩     d_rank

    大数据二班    常三飞           98              1

    大数据二班    常中新           98              1

    大数据二班    杨    夺           96              2

    大数据二班    欧明健           96              2

    大数据二班    郭志高           95              3

    大数据二班    李绍幸           92              4

4、RANK_NUMBER()

说明:在进行排序时,每一位都要不同的序号,即便数据相同,也会随机安排前后位次。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,2,3,4,5,6······

代码示例:对第一次月考班级成绩进行排名 rank_number() over(partition by order by desc)

select

    calss_name 班级名称

    ,student_name 学生姓名

    ,student_achievement 学生成绩

    ,rank_number() over(partition by calss_name order by student_achievement desc) n_rank

from 学生成绩信息表

where 考试类目 = ‘第一次月考’

结果示例:

    班级名称       学生姓名      学生成绩     d_rank

    大数据二班    常三飞           98              1

    大数据二班    常中新           98              2

    大数据二班    杨    夺           96              3

    大数据二班    欧明健           96              4

    大数据二班    郭志高           95              5

    大数据二班    李绍幸           92              6
栏目分类全部>
腾讯云采购季云服务器一折促销
0.056508s