如何使用SQL的SELECT与COUNT查询Watson教学楼课程的学生人数等信息
查询Watson教学楼课程的选课学生明细
需求说明
从三张关联表中提取以下信息:
- 课程代码(course_id)
- 课程名称(title)
- 对应课程在Watson教学楼开设的选课学生人数(去重统计)
完整SQL查询语句
SELECT c.course_id, c.title, COUNT(DISTINCT t.ID) AS student_count FROM course c JOIN section s ON c.course_id = s.course_id JOIN takes t ON s.course_id = t.course_id AND s.sec_id = t.sec_id AND s.semester = t.semester AND s.year = t.year WHERE s.building = 'Watson' GROUP BY c.course_id, c.title;
代码解释
- 表关联:明确使用
JOIN指定连接条件,避免NATURAL JOIN可能带来的隐式字段匹配错误,确保三张表通过正确的外键关联。 - 过滤条件:通过
WHERE s.building = 'Watson'筛选出在Watson教学楼开设的课程段。 - 分组统计:按课程的
course_id和title分组,用COUNT(DISTINCT t.ID)去重统计每个课程的选课学生数(避免同一学生选同一门课多个段被重复计数)。 - 别名设置:给表和统计字段设置别名,提升SQL的可读性。
内容的提问来源于stack exchange,提问作者alive
相关产品推荐
相关产品推荐

