SQL使用子查询,查找班级成绩最高分
-- 根据要求,获取班级成绩的最高分的学生
-- 第一个子查询,先去各个科目的最高,再横向比较各个科目的最高,再取最高分的那个科目
-- 第二个子查询,查询每个同学的最高分
-- 最后,通过第一个子查询查询出第一个最高分,和第二个子查询查询出学生的最高,当这两个相同时,即要获取的最高分
第一:子查询做的就是先去每个科目的最高分,再取各个科目的最高分
- 第一:使用MAX取个各科的最高分(MAX返回一列中的最大值,即纵向比较取最大值)
- 第二:纵向比较之后,需要横向比较多个科目的最高分,再取多个科目的最大值,从多个值中取最大值 GREATEST
- 第三:需要取的是每个班级的最高分,所以需要使用到分组 GROUP BY
SELECT class_name,GREATEST(MAX(Linux),MAX(MySQL),MAX(Java)) 'course_maxscore'
from tb_grade_score
GROUP BY class_name
第二:子查询做的就是查询每个同学的最高分,得出最高分,最后判断最高和第一个子查询的最高分是否一致,一致就是要找的学生
- 使用GREATEST比较多个科目的分数,得出最大值
SELECT * ,GREATEST(Linux,MySQL,Java)'Maxscore' FROM tb_grade_score
第三:第一二子查询,根据条件查询 班级分数最高分和学生的最高分是否一致,一致的话,就是要找的最高分啦
SELECT t2.student_name,t2.class_name,t1.course_maxscore,t2.Maxscore
FROM
(SELECT class_name,GREATEST(MAX(Linux),MAX(MySQL),MAX(Java)) 'course_maxscore'
from tb_grade_score
GROUP BY class_name)t1,
(SELECT * ,GREATEST(Linux,MySQL,Java)'Maxscore' FROM tb_grade_score)t2
where t1.class_name = t2.class_name and t1.course_maxscore=t2.Maxscore
最终实现的结果:
原始的表数据

最终的结果:

SQL使用子查询,查找班级成绩最高分的更多相关文章
- SQL Fundamentals: 子查询 || 分析函数(PARTITION BY,ORDER BY, WINDOWING)
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
- SQL Fundamentals: 子查询 || WHERE,HAVING,FROM,SELECT子句中使用子查询,WITH子句
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
- SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
- SQL的子查询操作
对于表中的每一个记录,我们有时候需要提取特殊的或者你需要的记录,要提前做一个表的筛选,之后再对你选出的记录做一个修改,此时你必须使用SQL的子查询操作.如:修改id=5的记录的strContent字段 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- SQL关联子查询
SQL关联子查询执行顺序: 1.先取到主查询中的相关数据,一次取一行主查询的数据 2.然后传入子查询,进行子查询 3.最后做主查询where筛选,注意子查询的where条件同样需要加在主查询后 参考: ...
- SQL server 子查询、设置主键外键、变量及变量查询
一.子查询 子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这 ...
- Linq To Sql 语法 子查询 & In & Join
子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 =from cin ctx.Customers where ...
- SQL 数据库 子查询及示例
子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...
随机推荐
- 自然语言处理--中文文本向量化counterVectorizer()
1.载入文档 #!/usr/bin/python # -*- coding: utf-8 -*- import pandas as pd import re import jieba from skl ...
- try-catch+thows异常范围说明
方式一: CatalogPO deleteTarget = null; /** 查询是否存在 **/ deleteTarget = catalogMapper.findByCatalogId(cata ...
- 【转载】不得不知道的Python字符串编码相关的知识
原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII charact ...
- BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10503 Solved: 4558[Submit][Status ...
- Yarn application has already exited with state FINISHED
如果在运行spark-sql时遇到如下这样的错误,可能是因为yarn-site.xml中的配置项yarn.nodemanager.vmem-pmem-ratio值偏小,它的默认值为2.1,可以尝试改大 ...
- MFC中添加新的对话框
MFC工程中,除了系统自动生成的一些对话框之外,还需要根据自己的需求,添加新的对话框.这里总结下自己最近使用的方法. 首先,找到Resource View中自己新建的工程,然后右键,选择Add Cla ...
- 结对编程--四则运算(Java)梅进鹏 欧思良
结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...
- Postgresql 創建觸發器,刪除觸發器和 禁用觸發器
CREATE OR REPLACE FUNCTION XF_VIP_AFUPD_WX() RETURNS trigger AS $$ DECLARE i_count integer; s_wx_ope ...
- hbase启动异常的慢
hbase启动慢 hbase启动非常慢,要几个小时,查看日志,发现有如下异常信息: 2016-12-02 22:39:09,365 ERROR [RS_LOG_REPLAY_OPS-db-dn001: ...
- 使用vue.js常见错误之一
打包项目时,在vscode中输入如下命令 webpack .\src\main.js .\dist\bundle.js 出现如下错误: WARNING in configurationThe 'mod ...