首页 > 代码库 > 窗口函数 RANK
窗口函数 RANK
最近一直在了解与学习sqlserver 窗口函数的各种知识,发现窗口函数能够很方便实现在之前可能需要关联子查询等一些复杂的逻辑才能实现的逻辑,下边是自己的一些学习笔记。
RANK函数:从小到大,每次最苦逼的就是考试了,肿么都会有一个结果排名,张三数学第一,李四、小明并列第二...。这应该是我们最早接触到的排名概念,sqlserver 中rank 也是这样的意思,和row_number() 区别就是rownum会为每个分区值相同的去一个随机排名,即排名不会存在并列的情况
创建一个数据表:包含班级编号、课程编号、学生编号、学生成绩(T_StudentGrade ClassId ,CourseId ,StudentId ,SGrade )
1:获得每个班级,每门课程同学们的成绩排名情况(成绩相同,并列排名)
1 SELECT id , 2 ClassId , 3 CourseId , 4 StudentId , 5 SGrade , 6 RANK() OVER ( PARTITION BY ClassId, CourseId ORDER BY SGrade DESC ) AS rownum 7 FROM dbo.T_StudentGrade;
2:获得每门课程的排名前三学生情况
1 WITH tmpTable AS ( 2 SELECT id , 3 ClassId , 4 CourseId , 5 StudentId , 6 SGrade , 7 RANK() OVER ( PARTITION BY CourseId ORDER BY SGrade DESC ) AS ScoreRank 8 FROM dbo.T_StudentGrade) 9 SELECT * FROM tmpTable WHERE tmpTable.ScoreRank<4
窗口函数 RANK
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。