coisini002 2023-04-14 20:20 采纳率: 52.3%
浏览 127
已结题

统计每门课程的选课人数(不包括没人选的课程)

有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
统计每门课程的选课人数(不包括没人选的课程),列出课程号和选课人数。

怎么表达不包括没人选的课程,

  • 写回答

2条回答 默认 最新

  • 混分吴老师 2023-04-14 21:21
    关注

    可以使用 SQL 中的内连接(INNER JOIN)操作来将三张表连接起来,并在结果集中只保留有选课记录的课程,从而排除没人选的课程。具体 SQL 语句如下:

    SELECT Cno, COUNT(*) AS num_of_students
    FROM Course
    INNER JOIN SC ON Course.Cno = SC.Cno
    GROUP BY Course.Cno
    

    这个 SQL 语句的含义是,首先将 Course 表和 SC 表通过课程号(Cno)进行内连接,得到一个新的临时表,其中只包含有选课记录的课程信息。然后,对这个临时表按照课程号进行分组(GROUP BY)操作,并统计每组的记录数,也就是每门课程的选课人数。最后,将课程号(Cno)和选课人数(num_of_students)作为结果返回。

    由于使用了内连接,因此只有有选课记录的课程才会出现在结果集中,也就满足了“不包括没人选的课程”的要求。
    如有帮助请点击采纳

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月15日
  • 创建了问题 4月14日