本文主要是介绍找出班级前两名学生,并标好排名 -- 031,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
♣题目部分 找出班级前两名学生,并标好排名?
1A刘二702A马五903A张三404B李四305B王麻子80 ♣答案部分
建表CREATE TABLE `course` (`coursed` int(32) PRIMARY KEY ,`class` varchar(255) ,`name` varchar(22),`score` int(32)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `course` VALUES (1, 'A', '刘二', 70);
INSERT INTO `course` VALUES (2, 'A', '马五', 90);
INSERT INTO `course` VALUES (3, 'A', '张三', 40);
INSERT INTO `course` VALUES (4, 'B', '李四', 30);
INSERT INTO `course` VALUES (5, 'B', '王麻子', 80);
答案: 利用mysql的查询函数row_number() over()的分组排序功能。使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。 使用8.0以上版本mysql跑row_number() over()函数。SELECTt.coursed,name,class,score,`rank`
FROM( SELECT coursed,name,class,score, row_number() over (PARTITION BY class ORDER BY score desc) AS `rank` FROM course ) t
WHEREt.rank <= 2
order by t.class,t.`rank`;
About Me:小婷儿
● 本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用
● 作者博客地址:https://blog.csdn.net/u010986753
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 微信:tinghai87605025 联系我加微信群
● QQ:87605025
● QQ交流群py_data :483766429
● 公众号:python宝 或 DB宝
● 提供OCP、OCM和高可用最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!
有您的支持,小婷儿一定会越来越好!
这篇关于找出班级前两名学生,并标好排名 -- 031的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!