11. 查询两门及以上不及格课程的同学的学号,姓名及其平均成绩
关键词: “学生姓名、平均成绩、课程”
第一步: 锁定表,学生表,成绩表

第二步: 过滤出所有小于60分的成绩,并按学生Sid分组,获取记录条数大于等于2的Sid
SELECT sid FROM sc WHERE score < 60 GROUP BY sid HAVING COUNT(sid) >= 2;

第三步: 每个学生的平均成绩
SELECT sid,AVG(score) AS avg_score FROM sc GROUP BY sid;

第四步: 学生表关联平均成绩表,获得每个学生的学号,姓名及其平均成绩
SELECT st.Sid,st.Sname,b.avg_score FROM student st
JOIN (SELECT sid,AVG(score) AS avg_score FROM sc GROUP BY sid) b ON st.Sid = b.Sid;

第五步: 结合第二步筛选出最终结果
SELECT st.Sid,st.Sname,b.avg_score FROM student st
JOIN (SELECT sid,AVG(score) AS avg_score FROM sc GROUP BY sid) b ON st.Sid = b.Sid
WHERE st.sid IN
(SELECT sid FROM sc WHERE score < 60 GROUP BY sid HAVING COUNT(sid) >= 2);

本文介绍如何通过SQL查询找出有两门或以上不及格课程的学生学号、姓名及平均成绩。首先从成绩表中筛选出分数低于60分的学生,并按学号分组选出至少有两门不及格科目的学生。接着计算每位学生的平均成绩,最后将学生表与成绩表联结,获取所需的学生信息。
9216

被折叠的 条评论
为什么被折叠?



