前段时间面试遇到被对方现场考察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查询每科第一名及最后一名(学科、姓名、分数)...相关推荐

  1. mysql查询自定义列明_自定义sql查询出的结果集的列名都是数据库的字段名。

    代码如下: @Override public DataPageDTO empsPage(EmpListPageParams params) { FileSqlManager fm = new File ...

  2. mysql中建立索引的原则_在SQL数据库中设定索引的原则是什么?(注意是设定不是创建)...

    其实索引的好坏还和你的查询语句有关系,就是where后边的列有关.如果两者协调不好的话,同样应用索引也得不到什么好处.下边的文章希望对你有益: 索引的设计 A:尽量避免表扫描检查你的查询语句的wher ...

  3. mysql中日期怎样求差_在Sql语句中怎样计算出两个日期的差值

    展开全部 sql语句中计算两个日期的差值用32313133353236313431303231363533e4b893e5b19e31333365643662datediff函数. 工具:sqlser ...

  4. mysql中的索引什么意思_索引是什么意思(数据库中的索引是什么)

    mysql中索引是存储引擎层面用于快速查询找到记录的一种数据结构,索引对性能的影响非常重要,特别是表中数据量很大的时候,正确的索引会极大的提成查询效率.简单理解索引,就相当于一本砖头厚书的目录部分,通 ...

  5. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  6. Mysql中按某一字段去重,并查询去重后的所有字段

    1.Mysql中按某一字段去重,并查询去重后的所有字段 SELECT pnum, name   FROM products AA  WHERE id =        (SELECT MIN(id)  ...

  7. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

  8. mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...

    问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...

  9. 怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...

    请点击上方快速关注 思域HATCHBACK很火.这款被誉为"国产Type R"的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围.中置排气和手动变 ...

最新文章

  1. Logback介绍及入门
  2. 在ubuntu13.04上安装Mac主题
  3. [位运算|状态压缩] leetcode 78 子集
  4. 一个项目部署多个节点会导致锁失效么_不为人知的分布式锁实现,全都在这里了
  5. apk安装到电视上看不到图标_零基础搭建电视直播APP平台第二弹(修改APP)
  6. 周末内部常用的15款开发者工具
  7. 快速的APK厂商快速和免费的Andr​​oid应用程序生成器无需编码技巧
  8. 搜索引擎Autonomy
  9. 商业智能bi是什么意思?
  10. 10.1假期一半总结
  11. java 高cpu占用问题解决
  12. 多语言应用性能监控系统:Elastic APM
  13. h5唤起app,清除timeout
  14. html 在线测试 鱼缸,五大浏览器功耗(电量消耗)测试:IE9领先
  15. steps()的学习
  16. 提取图片中文字的方法
  17. Ubuntu 22.04操作系统下常用软件备忘
  18. rdkitpython | 挑选多个互变异构体的主要构象
  19. (翻译)2016美国数学建模MCM D题 翻译:测量协会信息网络的演变和影响
  20. hibernate QBC和QBE精讲与案列分析(下)

热门文章

  1. 实用教程:如何在电脑上安装安卓应用程序
  2. 快手2020校园招聘秋招笔试--算法B试卷
  3. C#超级通信调试工具
  4. 聚焦医疗数字化转型 浪潮信息帮助医院提升诊疗效率 保障业务持续运行
  5. C语言单元测试embUnit入门学习
  6. #umn 来美国近一个月的简单见闻
  7. 所有帖子的 分类 总结
  8. Oracle中同义词synonym的作用
  9. AR眼镜走向独立,从一个配件开始
  10. 博文推荐|Apache Doris 单节点 Docker 集群制作教程