【发布时间】:2019-05-14 12:27:51
【问题描述】:
我试图通过查询不同表中的数据来获得平均成绩,虽然看起来一切都如预期的那样,但查询不起作用。表格如下:
grade(id_grade, id_subject, student_code and grade)
student(student_code, first_name, last_name, birthdate, average_grade)
subject(id_subject, credits, subject_code, name, teacher)
平均成绩使用以下公式计算:(所有匹配成绩的总和(对应于学生中的学生代码)* 学生表的平均成绩 + 学科的学分 * 最新添加的成绩)/(所有匹配成绩的总和 +学分)。
查询如下:
UPDATE student AS s
SET
average_grade = (
(SUM(g.grade) * s.average_grade + sub.credits * g.grade) /
(SUM(g.grade) + sub.credits) )
FROM grade AS g, subject AS sub
WHERE s.student_code = g.student_code AND
g.id_subject = sub.id_subject AND s.student_code = 141837;
请记住,这是 PostgreSQL,因此某些输入可能与其他 SQL-s 不同,但这是我能想到的。 我也尝试了以下方法,但也没有产生任何结果:
UPDATE student AS s
LEFT JOIN grade AS g ON (s.student_code = g.student_code)
LEFT JOIN subject AS sub ON (g.id_subject = sub.id_subject)
SET average_grade = (
(SUM(g.grade) * s.average_grade + sub.credits * g.grade) /
(SUM(g.grade) + sub.credits))
WHERE s.student_code = 141837;
非常感谢任何帮助!
【问题讨论】:
-
请提供样本数据、所需结果以及平均计算的说明。
标签: sql postgresql