mysql 查询两门以上不及格学生名字及其平均成绩

该博客介绍了如何使用SQL查询从学生、学科和成绩表中筛选出两门及以上不及格课程的学生,包括姓名和他们的平均成绩。通过内连接、右连接和分组操作,展示了如何获取这些关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.学科表(表名 c)

2.学生表(表名 s)

3.成绩表(表名 sc)

问题:查询两门以上(含两门)不及格课程的学生姓名及其平均成绩

select 
MAX(s.sname) as 姓名,AVG(s1.scgrade) as 平均成绩
FROM
s 
INNER JOIN sc on s.sno = sc.sno and sc.scgrade < 60

INNER JOIN c on c.cno = sc.cno

RIGHT JOIN sc as s1 on s1.sno = s.sno

GROUP BY s.sno
HAVING COUNT(c.cno) >=2;

查询结果:

注意:这里计算平均成绩是右链接 sc表,并起别名为s1 ,然后取 s1 表的 scgrade 字段计算平均数; 第一个sc表只有不及格学科的记录,并不是所有学科成绩记录。

select 
MAX(s.sname) as 姓名,AVG(s1.scgrade) as 平均成绩,AVG(sc.scgrade) as 不及格学科平均成绩
FROM
s 
INNER JOIN sc on s.sno = sc.sno and sc.scgrade < 60

INNER JOIN c on c.cno = sc.cno

RIGHT JOIN sc as s1 on s1.sno = s.sno

GROUP BY s.sno
HAVING COUNT(c.cno) >=2;

查询结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值