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