作业及第4个问题求解

作业及第4个问题求解

#1查询没学过"张三"老师授课的同学的信息
SELECT
student.S,student.Sname,student.Sage,student.Ssex
FROM
student
LEFT JOIN (
SELECT
student.S
FROM
student
JOIN sc ON student.S = sc.S
JOIN course ON sc.C = course.C
JOIN teacher ON course.T = teacher.T
WHERE
teacher.Tname = “张三”
) AS s1 ON student.S = s1.S
WHERE
s1.S IS NULL;

#2查询课程不及格(小于60分)的学生,课程名,以及对应分数,并先根据学生分组
#group_concat分组
SELECT student.S,student.Sname,GROUP_CONCAT(course.Cname),GROUP_CONCAT(sc.score)
FROM student
LEFT JOIN sc ON student.S=sc.S
LEFT JOIN course ON sc.C=course.C
WHERE sc.score<60
GROUP BY student.S;

#3查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
SELECT student.S,student.Sname,AVG(sc.score) AS avg
FROM student LEFT JOIN sc ON student.S=sc.S
GROUP BY student.S
HAVING avg>=60;

#4 对于题目三,若是理解为 查询成绩都大于各科成绩的平均分的学生姓名和各科的平均分怎么写

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,sql语句完成的不错,很棒呐,第四个问题同学将最后条件改成各科成绩大于平均成绩即可

祝学习愉快~

  • 缘来来 提问者 #1
    还是没能理解,怎么表示各科成绩来大于avg呢 可以语句演示一下吗
    下载视频          
    2022-03-17 19:00:19
  • 缘来来 提问者 #2
    可能我没表达清楚 我的意思是 如果问:查询出 各科成绩都大于该课平均成绩的同学姓名(也就是同时满足多门课程要求的学生)以及各科的平均分 麻烦老师解惑,给个演示语句
    下载视频          
    2022-03-17 19:16:35
  • 好帮手慕阿园 回复 提问者 缘来来 #3

    同学你好,上面是老师没有理解同学的意思,同学可以试试如下sql语句

    SELECT 
    stu.Sname '姓名',
     co.Cname '学科',
     sc.score '学生分数',
     b.av '该科平均分数' 
     from (
    select S , COUNT(S) aa FROM sc ss LEFT JOIN(
    select s.c, AVG(s.score) av FROM sc s GROUP BY s.c) b
    ON ss.c = b.c
    
    where score > av GROUP BY S HAVING  aa >= 3
    ) ss
    
    LEFT JOIN sc sc on sc.S = ss.S
    LEFT JOIN course co on co.C = sc.C
    LEFT JOIN student stu on stu.s = ss.S
    LEFT JOIN(
    select s.c, AVG(s.score) av FROM sc s GROUP BY s.c) b on b.c = co.C

    注:同学可根据自己的理解优化sql哦

    祝学习愉快~

    2022-03-18 10:32:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师