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 @ 2022-08-10 20:28  OnlyOnYourself-Lzw  阅读(1048)  评论(0编辑  收藏  举报