Question05-查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
问题1:查询所有有成绩的SQL
-
SQL如下所示
-
方案1:where做表连接
-
SELECT a.SID, a.Sname, COUNT(b.CID) 选课总数, SUM(score) 总成绩 FROM Student a , SC b WHERE a.SID = b.SID GROUP BY a.SID,a.Sname ORDER BY a.SID;
-
-
方案2:左外连接查询
-
SELECT stu.`SID`, stu.`Sname`, COUNT(sc.`CID`) 选课总数, SUM(sc.`score`) 总成绩 FROM Student stu LEFT JOIN SC sc ON stu.`SID` = sc.`SID` GROUP BY stu.`SID`, stu.`Sname` HAVING SUM(sc.`score`) > 0;
-
-
-
where
和join on
区别之前已经说过了,可以回去看Question01
的随笔 -
运行结果如下所示
问题2:查询所有(包括有成绩和无成绩)的SQL
-
SQL如下所示
-
跟问题1基本一致,因为要查询所有,所以将过滤条件去掉即可
-
SELECT stu.`SID`, stu.`Sname`, COUNT(sc.`CID`) 选课总数, IFNULL(SUM(sc.`score`), 0) 总成绩 FROM Student stu LEFT JOIN SC sc ON stu.`SID` = sc.`SID` GROUP BY stu.`SID`, stu.`Sname`;
-
-
运行结果如下所示
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器