首页 > 代码库 > 怎么循序渐进写出分组排名
怎么循序渐进写出分组排名
1.如下图,有两个班,分别是四个人,每个班都有2名学渣,2个学霸
2.利用row_number() 函数 对两个班级进行排名,如下图
3.查出每个班级前三名的同学,正好利用上图的rank,观察到上图的rank 就是每个人在自己班级的名次,所以在外面包裹一层 在条件查询就可以了
附上sql语句:
WITH cte AS (SELECT ‘一班‘ 班级, ‘张三‘ 姓名, 12 成绩 UNION ALL SELECT ‘一班‘ 班级, ‘张四‘ 姓名, 24 成绩 UNION ALL SELECT ‘二班‘ 班级, ‘张五‘ 姓, 38 成绩 UNION ALL SELECT ‘二班‘ 班级, ‘张六‘ 姓名, 98 成绩 UNION ALL SELECT ‘二班‘ 班级, ‘张七‘ 姓名, 45 成绩 UNION ALL SELECT ‘一班‘ 班级, ‘张八‘ 姓名, 87 成绩 UNION ALL SELECT ‘二班‘ 班级, ‘张九‘ 姓名, 95 成绩 UNION ALL SELECT ‘一班‘ 班级, ‘张十‘ 姓名, 88 成绩)--SELECT * FROM cte order by [班级] descselect a.* from (select row_number() over(PARTITION by [班级] order by [成绩] desc ) rank,* from cte ) awhere a.rank<=3 order by 班级 desc,rank asc
怎么循序渐进写出分组排名
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。