sql题目练习-子查询

题目:

假设有 students 表,字段有 student_id(学生编号,主键),student_name(学生姓名),class_id(班级编号),score(成绩);

以及 classes 表,字段有 class_id(班级编号,主键),class_name(班级名称)。

编写 SQL 查询成绩高于所在班级平均成绩的学生姓名、成绩和班级名称
解答:

通过连接 students 表和 classes 表,并使用子查询计算每个班级的平均成绩,然后在主查询中筛选出成绩高于所在班级平均成绩的学生信息。

sql 复制代码
select s.student_name,c.class_name,s.score
from students s
join  classes c on s.class_id=c.class_id
where s.score>(
 select avg(score) as avg_score
 from students
 group by class_id
 having class_id=s.class_id
 )
相关推荐
程序新视界3 小时前
什么是MySQL分区?
数据库·mysql·dba
程序新视界3 小时前
实战技巧:使用冗余查询条件解锁MySQL中的索引
数据库·mysql·dba
Jabes.yang4 小时前
Java求职面试: 互联网医疗场景中的缓存技术与监控运维应用
java·redis·spring security·grafana·prometheus·oauth2·互联网医疗
初级炼丹师(爱说实话版)4 小时前
内存泄漏与内存溢出
java
CryptoRzz4 小时前
越南k线历史数据、IPO新股股票数据接口文档
java·数据库·后端·python·区块链
!if4 小时前
springboot mybatisplus 配置SQL日志,但是没有日志输出
spring boot·sql·mybatis
学Java的bb4 小时前
MybatisPlus
java·开发语言·数据库
讓丄帝愛伱4 小时前
Mybatis Log Free插件使用
java·开发语言·mybatis
重生之我要当java大帝4 小时前
java微服务-尚医通-编写医院设置接口上
java·数据库·微服务