mysql中查询的第一名_使用SQL查询每科第一名及最后一名(学科、姓名、分数)...
前段时间面试遇到被对方现场考察SQL水平的情况,现场写出来了但被面试官告知不正确,今天分享一下正确写法,一起共勉。
题目:使用SQL查询每科第一名及最后一名(学科、姓名、分数)
自己创建了下表以方便演示:
看一下结果 SELECT * FROM student1
使用SELECT subject,max(score) FROM student1 GROUP BY subject,可以查出每科最高分或者最低分。那么,想要知道每科最高分是谁,加上name不就能得到这个数据了吗?接着使用SELECT subject,max(score),name FROM student1 GROUP BY subject一旦执行便立即出现报错。
GROUP BY能用在想要分组的列名前,或者结合聚合函数出现(MAX,MIN,COUNT,SUM,AVG),name是个单独的列名,不符合前述条件,所以这么查是不对的。
第一步,我们还是先查出每科最高分或者最低分
SELECT MAX(score) AS score,subject FROM student1 GROUP BY subject
SELECT MIN(score) AS score,subject FROM student1 GROUP BY subject
第二步,查出每科最高分或者最低分的姓名、学科、分数
SELECT "最高分",student1.*
FROM student1,(SELECT MAX(score) AS score,subject FROM student1 GROUP BY subject )b
WHERE student1.`score` = b.score
AND student1.`subject` = b.subject
SELECT "最低分",student1.*
FROM student1,(SELECT MIN(score) AS score,subject FROM student1 GROUP BY subject )b
WHERE student1.`score` = b.score
AND student1.`subject` = b.subject
最后一步,使用UNION组合查询最高分及最低分的姓名、学科、分数
SELECT "最高分",student1.*
FROM student1,(SELECT MAX(score) AS score,subject FROM student1 GROUP BY subject )b
WHERE student1.`score` = b.score
AND student1.`subject` = b.subject UNION
SELECT "最低分",student1.*
FROM student1,(SELECT MIN(score) AS score,subject FROM student1 GROUP BY subject )b
WHERE student1.`score` = b.score
AND student1.`subject` = b.subject
mysql中查询的第一名_使用SQL查询每科第一名及最后一名(学科、姓名、分数)...相关推荐
- mysql查询自定义列明_自定义sql查询出的结果集的列名都是数据库的字段名。
代码如下: @Override public DataPageDTO empsPage(EmpListPageParams params) { FileSqlManager fm = new File ...
- mysql中建立索引的原则_在SQL数据库中设定索引的原则是什么?(注意是设定不是创建)...
其实索引的好坏还和你的查询语句有关系,就是where后边的列有关.如果两者协调不好的话,同样应用索引也得不到什么好处.下边的文章希望对你有益: 索引的设计 A:尽量避免表扫描检查你的查询语句的wher ...
- mysql中日期怎样求差_在Sql语句中怎样计算出两个日期的差值
展开全部 sql语句中计算两个日期的差值用32313133353236313431303231363533e4b893e5b19e31333365643662datediff函数. 工具:sqlser ...
- mysql中的索引什么意思_索引是什么意思(数据库中的索引是什么)
mysql中索引是存储引擎层面用于快速查询找到记录的一种数据结构,索引对性能的影响非常重要,特别是表中数据量很大的时候,正确的索引会极大的提成查询效率.简单理解索引,就相当于一本砖头厚书的目录部分,通 ...
- 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- Mysql中按某一字段去重,并查询去重后的所有字段
1.Mysql中按某一字段去重,并查询去重后的所有字段 SELECT pnum, name FROM products AA WHERE id = (SELECT MIN(id) ...
- 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...
在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...
- mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...
问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...
- 怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...
请点击上方快速关注 思域HATCHBACK很火.这款被誉为"国产Type R"的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围.中置排气和手动变 ...
最新文章
- Logback介绍及入门
- 在ubuntu13.04上安装Mac主题
- [位运算|状态压缩] leetcode 78 子集
- 一个项目部署多个节点会导致锁失效么_不为人知的分布式锁实现,全都在这里了
- apk安装到电视上看不到图标_零基础搭建电视直播APP平台第二弹(修改APP)
- 周末内部常用的15款开发者工具
- 快速的APK厂商快速和免费的Andr​​oid应用程序生成器无需编码技巧
- 搜索引擎Autonomy
- 商业智能bi是什么意思?
- 10.1假期一半总结
- java 高cpu占用问题解决
- 多语言应用性能监控系统:Elastic APM
- h5唤起app,清除timeout
- html 在线测试 鱼缸,五大浏览器功耗(电量消耗)测试:IE9领先
- steps()的学习
- 提取图片中文字的方法
- Ubuntu 22.04操作系统下常用软件备忘
- rdkitpython | 挑选多个互变异构体的主要构象
- (翻译)2016美国数学建模MCM D题 翻译:测量协会信息网络的演变和影响
- hibernate QBC和QBE精讲与案列分析(下)