50个SQL语句(MySQL版) 问题三

--------------------------表结构--------------------------

student(StuId,StuName,StuAge,StuSex) 学生表

teacher(TId,Tname) 教师表

course(CId,Cname,C_TId) 课程表

sc(SId,S_CId,Score) 成绩表

----------------------------------------------------------

问题三:查询所有同学的学号、姓名、选课数、总成绩

SELECT b.StuId,b.StuName,COUNT(a.S_CId),
SUM(CASE WHEN a.Score is NULL then 0 else a.Score END)
FROM sc a
RIGHT JOIN student b ON a.SId=b.StuId
GROUP BY StuId;

使用左外连接(评论区大佬提供的方法)

SELECT StuId 学号,StuName 姓名,COUNT(S_CId) 选课数, 
SUM(CASE WHEN s.Score IS NULL THEN 0 ELSE s.Score END) 总成绩
FROM student LEFT JOIN sc s ON SId = StuId GROUP BY StuId;

答案仅供参考,不一定完全正确,若发现错误或有更好的,欢迎评论,互相交流,一起成长!!!

原文地址:https://www.cnblogs.com/love-ziji/p/12829043.html