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

PostgreSQL如何创建统计学生课程加权考试成绩的视图

加权成绩视图创建语句

你可以直接使用以下SQL语句创建符合要求的total_marks视图:

CREATE VIEW total_marks (course_id, student_id, marks) AS
SELECT
    ce.course_id,
    ce.student_id,
    -- 计算加权总分并格式化为两位小数的百分比形式
    TO_CHAR(SUM(w.weightage * eg.mark), '990.99%') AS marks
FROM course_enroll ce
-- 关联考试成绩表获取学生单场考试得分
INNER JOIN exam_grade eg 
    ON ce.student_id = eg.student_id
-- 关联权重表获取对应考试的权重,双字段匹配避免数据错乱
INNER JOIN weight w 
    ON eg.exam_id = w.exam_id 
    AND ce.course_id = w.course_id
-- 按课程、学生分组统计总加权分
GROUP BY ce.course_id, ce.student_id;

逻辑说明

  • 从选课表course_enroll作为主表,确保仅统计实际选修对应课程的学生记录
  • 双字段关联权重表,避免同考试ID跨课程的权重匹配错误
  • 用TO_CHAR函数直接输出带百分号的格式化结果,和你给出的示例效果完全对齐

适配调整方案

如果你的业务有特殊需求,可以按需修改:

  • 如需包含缺考学生:将INNER JOIN exam_grade改为LEFT JOIN exam_grade,同时把计算逻辑改为SUM(w.weightage * COALESCE(eg.mark, 0)),缺考科目得分按0计算
  • 如权重存储为百分值(比如30%权重存的是30而非0.3):将计算逻辑改为SUM(w.weightage * eg.mark) / 100后再格式化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:45:02