You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL新手如何查询每名学生所有课程的考试参与次数

实现每名学生对应每门课程考试参与次数的SQL查询方案

你现有的查询已经完成了所有所需表的关联逻辑,仅需增加分组统计规则即可实现需求,修改后的查询语句如下:

SELECT 
  students.id, 
  students.surname, 
  students.name, 
  courses.name AS "course",
  COUNT(*) AS exam_attempt_count
FROM `students`
JOIN exam_student
  ON exam_student.student_id = students.id
JOIN exams
  ON exam_student.exam_id = exams.id
JOIN courses
  ON exams.course_id = courses.id 
GROUP BY 
  students.id, 
  students.surname, 
  students.name, 
  courses.id,
  courses.name
ORDER BY 
  students.surname ASC, 
  students.name ASC,
  courses.name ASC;

逻辑说明:

  • 新增的COUNT(*)会统计每个「学生+对应课程」分组下的记录数,返回结果就是该学生这门课程的考试参与次数,别名exam_attempt_count可以根据你的业务命名习惯自行修改
  • GROUP BY子句包含了所有SELECT中未被聚合的字段,可避免开启ONLY_FULL_GROUP_BYSQL模式时出现语法报错
  • 如果你需要展示参与次数为0的记录(如某学生从未参加过某门课的考试也需要显示次数为0),可以将现有内连接(JOIN)改为左连接(LEFT JOIN),同时将COUNT(*)替换为COUNT(exams.id),即可兼容空值场景统计0次的需求

内容的提问来源于stack exchange,提问作者Gianluca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:48:03