SQL开窗函数-排序:rank、dense_rank、row_number 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、ROW_NUMBER() 说明:在进行排序时,每一位都要不同的序号,即便数据相同,也会随机安排前后位次。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,2,3,4,5,6······ 代码示例:对第一次月考班级成绩进行排名 row_number() over(partition by * order by * desc) select calss_name 班级名称 ,student_name 学生姓名 ,student_achievement 学生成绩 ,row_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
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/48877.html