当前位置: 首页 > news >正文

练习26-30:多表关联查询,子查询

四张表信息

在这里插入图片描述

26. 查询平均成绩大于等于85的所有学生的学号,姓名和平均成绩

第一步:锁定表为学生表和成绩表
第二步:查出平均成绩大于等于85的学生

 SELECT 
 sid,
 AVG(score) AS avg_score
 FROM sc
 GROUP BY sid
 HAVING avg_score >= 85;

在这里插入图片描述

第三步:关联学生表,获取到学生的学号和姓名,然后从结果中选出想要的字段

 SELECT
 a.sid,b.`Sname`,a.avg_score
 FROM(
 SELECT 
 sid,
 AVG(score) AS avg_score
 FROM sc
 GROUP BY sid
 HAVING avg_score >= 85) a
 LEFT JOIN student b
 ON a.sid = b.sid;

在这里插入图片描述

27. 查询课程名称为【数学】,且分数低于60的学生姓名和分数

第一步:锁定表,学生表、成绩表、课程表
第二步:从课程表查出【数学】的课程编号

 SELECT * FROM course WHERE course.`Cname` = '数学';

在这里插入图片描述

第三步:关联成绩表,查询【数学】分数低于60分的学生

SELECT
 *
 FROM (SELECT * FROM course WHERE course.`Cname` = '数学' ) a
JOIN sc b ON a.cid = b.cid;

在这里插入图片描述

第四步:关联学生表,获取学生的姓名,并过滤掉成绩低于60分的

SELECT
 *
 FROM (SELECT * FROM course WHERE course.`Cname` = '数学' ) a
JOIN sc b ON a.cid = b.cid
JOIN student c ON b.sid = c.sid
WHERE b.`score` < 60;

在这里插入图片描述

第五步:筛选出需要的字段

SELECT
 c.sid,
 c.sname,
 a.cname,
 b.score
 FROM (SELECT * FROM course WHERE course.`Cname` = '数学' ) a
JOIN sc b ON a.cid = b.cid
JOIN student c ON b.sid = c.sid
WHERE b.`score` < 60;

在这里插入图片描述

28. 查询所有学生的课程及分数情况(存在学生没有成绩,没选课的情况)

第一步:锁定表,学生表,成绩表
第二步:学生表左连接成绩表(因为学生表中的所有记录都需要出现在结果中)

 SELECT 
 a.*,
 b.score
 FROM student a
 LEFT JOIN sc b
 ON a.sid = b.sid;

在这里插入图片描述

29. 查询课程成绩在70分以上的姓名、课程名称和分数

第一步:锁定表,成绩表、学生表、课程表
第二步:从成绩表筛选出所有成绩大于70的记录

 SELECT * FROM sc WHERE score > 70;

在这里插入图片描述

第三步:关联学生表,获取学生的姓名,关联课程表,获取课程的名称,然后选出想要的字段

 SELECT 
 b.sname,
 c.cname,
 a.score
 FROM (SELECT * FROM sc WHERE score > 70) a
 JOIN student b
 ON a.sid = b.sid
 JOIN course c
 ON a.cid = c.cid;

在这里插入图片描述

30. 查询存在不及格的课程

第一步:从成绩表中过滤出哪些记录的分数小于60分,然后去重获取到cid

 SELECT 
 DISTINCT cid
 FROM sc
 WHERE score < 60;

在这里插入图片描述

第二步:从课程表获取课程信息

SELECT
 * 
 FROM course 
 WHERE cid IN (SELECT DISTINCT cid FROM sc WHERE score < 60);
 

在这里插入图片描述

相关文章:

  • 为什么apt-get update 要与apt-get install 在一起
  • 【2023硅谷数模笔试题】~ 题目及参考答案
  • 数据结构与算法之美读书笔记11
  • 贪心算法题
  • 报告分享|尼尔森宝宝树:2022母婴行业洞察报告
  • C#操作GridView控件绑定数据实例详解(二)
  • B+树索引(13)之索引挑选(下)
  • 每日leetcode[回文数】
  • 线性代数贯串全书各章节的隐含关系(以秩为中心)
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • 算法--分隔链表(Kotlin)
  • Postgresql查询执行模块README笔记
  • 【二叉树】最大二叉树 II
  • java毕业设计小说网站mybatis+源码+调试部署+系统+数据库+lw
  • 【每日一题】 和为 K 的子数组
  • $translatePartialLoader加载失败及解决方式
  • 【css3】浏览器内核及其兼容性
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【翻译】babel对TC39装饰器草案的实现
  • express + mock 让前后台并行开发
  • flutter的key在widget list的作用以及必要性
  • Java教程_软件开发基础
  • Java面向对象及其三大特征
  • REST架构的思考
  • 电商搜索引擎的架构设计和性能优化
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 欢迎参加第二届中国游戏开发者大会
  • 力扣(LeetCode)56
  • 前端之React实战:创建跨平台的项目架构
  • 如何在GitHub上创建个人博客
  • 深入浅出Node.js
  • 使用 QuickBI 搭建酷炫可视化分析
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 国内开源镜像站点
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (04)odoo视图操作
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Java数据结构)ArrayList
  • (poj1.2.1)1970(筛选法模拟)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (九十四)函数和二维数组
  • (十) 初识 Docker file
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)h264中avc和flv数据的解析
  • (转)Unity3DUnity3D在android下调试
  • (转载)Linux网络编程入门
  • ../depcomp: line 571: exec: g++: not found
  • .NET中使用Protobuffer 实现序列化和反序列化
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @Mapper作用