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

编写MySQL查询语句展示指定学期所有学生成绩

MySQL查询展示学期学生成绩结果

嘿,针对你的需求,我整理了几种不同场景的MySQL查询语句,你可以根据实际需要选用:

1. 基础查询:列出指定学期所有学生的每科成绩

如果只是需要清晰展示该学期(比如Semester Id为1)每个学生的各科成绩,直接查询即可:

SELECT 
    `Student Id` AS 学生ID,
    `Subject Id` AS 科目ID,
    Marks AS 成绩
FROM semester_student_marks
WHERE `Semester Id` = 1; -- 替换成你需要查询的学期ID

这里用了别名让结果更易读,如果你不需要别名,直接SELECT * FROM semester_student_marks WHERE Semester Id = 1;也可以,但指定字段会让结果更聚焦。

2. 汇总查询:展示每个学生的总分、平均分

如果需要对每个学生的成绩做汇总统计,比如计算总分和平均分,可以用分组查询:

SELECT 
    `Student Id` AS 学生ID,
    COUNT(`Subject Id`) AS 科目数量,
    SUM(Marks) AS 总分,
    ROUND(AVG(Marks), 2) AS 平均分 -- 保留两位小数
FROM semester_student_marks
WHERE `Semester Id` = 1
GROUP BY `Student Id`
ORDER BY 总分 DESC; -- 按总分降序排列,方便查看排名

这个查询会按学生分组,统计每个学生的科目数、总分和平均分,排序后能直观看到学生的成绩排名。

3. 行转列:把科目成绩展示为列(适合科目固定的情况)

如果你的科目数量固定(比如只有科目1、科目2),可以用条件聚合把每行的科目成绩转成列,让结果更像传统成绩单:

SELECT 
    `Student Id` AS 学生ID,
    MAX(CASE WHEN `Subject Id` = 1 THEN Marks END) AS 科目1成绩,
    MAX(CASE WHEN `Subject Id` = 2 THEN Marks END) AS 科目2成绩,
    SUM(Marks) AS 总分,
    ROUND(AVG(Marks), 2) AS 平均分
FROM semester_student_marks
WHERE `Semester Id` = 1
GROUP BY `Student Id`;

如果有更多科目,只需要继续添加MAX(CASE WHEN Subject Id = N THEN Marks END) AS 科目N成绩这类语句即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:05:42