MySql教程

【备战春招】第13天+MySQL刷题-02

本文主要是介绍【备战春招】第13天+MySQL刷题-02,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模块名
描述
课程名称
全能软件测试工程师
课程章节
MySQL刷题
打卡知识进程
知识进程:13 / 21
✔1.node.js初体验windows
✔2.commonjs-回顾ES6模块化
✔3.commonjs的语法介绍
✔4.commonjs和ES6 Module的区别
✔5.Bug分类
✔6.node.js和前端js的区别
✔7.左关联
✔8.聚合函数
✔9.【案例】统计上班时间
✔10.数据库的索引
✔11.索引的分类
✔12.查询数学成绩比语文成绩高的学生
✔13.查询平均成绩大于80分的学生
主讲老师
大周
学习开始时间
2023.02.18 20:11
学习结束时间
2023.02.18 20:41
总计时
30 min
课程收获/主要内容/编程目标
查询平均成绩大于80分的学生
学习感受/感想/领悟(心得)
我应该去工作。

学生表:

分数表:

编程目标:查询平均成绩大于80分的学生。
编程思路:
1)
a)对于分数表,按学生ID(student_id)对学生进行分组,并计算每个学生的平均成绩。
然后,HAVING子句将筛选出平均成绩大于80分的学生,
并将其 学生ID(student_id) 作为结果返回。
代码如下:

SELECT student_id
FROM score
GROUP BY student_id
HAVING AVG(score) > 80;

b)然后对于学生表,where 语句将筛选出 在 a)步骤算出来的结果集中的学生ID(id),
并将其名称(student_name)作为结果返回。
完整代码如下:

select student_name
from student
where id in 
(
SELECT student_id
FROM score
GROUP BY student_id
HAVING AVG(score) > 80
)

运行结果:

2)
分数表 包含学生ID(student_id)和成绩(score)两列,
学生表 包含学生ID(id)和学生姓名(student_name)两列,
可以使用以下SQL代码查询平均成绩大于80分的学生:

SELECT s.student_name
FROM score AS sc
INNER JOIN student AS s ON sc.student_id = s.id
GROUP BY s.id
HAVING AVG(sc.score) > 80;

该代码将通过INNER JOIN将分数表和学生表连接起来,
并按学生ID分组 计算平均成绩,
然后使用HAVING子句过滤出平均成绩大于80分的学生。
最后,SELECT语句将返回符合条件的学生姓名。
运行结果:

这篇关于【备战春招】第13天+MySQL刷题-02的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!