如何在一条SQL查询中同时使用COUNT和AVG统计学生每门课平均成绩
学生每门课程平均成绩统计方案
你使用的Exam_Result考试成绩表如下:
实现逻辑
统计每名学生对应每门课程的平均成绩,核心是按照学生、课程两个维度分组后聚合计算成绩均值即可。
可直接运行的SQL语句
SELECT -- 分组维度字段,可根据你的表实际字段名调整 student_id, student_name, course_id, course_name, -- 计算平均成绩,如需保留n位小数可改用 ROUND(AVG(score), n) AVG(score) AS course_average_score FROM Exam_Result -- 可选:添加过滤条件排除无效成绩,比如缺考的空值、0分等 -- WHERE score IS NOT NULL AND score > 0 -- 按学生、课程两个维度分组,保证统计粒度为「单个学生+单门课程」 GROUP BY student_id, student_name, course_id, course_name;
补充说明
- 上述SQL会自动对每名学生每门课程下的所有考试成绩(最多3次)做均值计算,无需额外限制考试次数条件
- 如果你的表字段名和示例中不一致,把SELECT和GROUP BY后的字段替换为你实际的字段即可
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

