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;
  • wherejoin 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`;
  • 运行结果如下所示

posted @   OnlyOnYourself-Lzw  阅读(1147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示