gpt4 book ai didi

mysql - SQL Join - 根据成绩类型计算加权学生成绩

转载 作者:行者123 更新时间:2023-11-29 13:02:54 25 4
gpt4 key购买 nike

我在根据特定成绩类型计算学生成绩时遇到问题。

我有下表

Students
----------------
stu_id
stu_fname
stu_lname

Grades
----------------
grade_id
grade_name
grade_type
grade_possible

StudentGrades
-----------------
stu_grade_id
grade_id
stu_id
grade_earned

GradeTypes
----------------
grade_type
grade_type_name
grade_weight

我想要做的是将每个成绩类型获得的成绩总和除以每个成绩类型可能的成绩总和。然后将商乘以该成绩类型的成绩权重。我希望我的最终结果是每个成绩类型中每个学生的计算成绩。然后我可以将它们加在一起以获得学生的最终成绩,但我必须先获得第一部分。

我是使用 sql 的新手,我不知道我是否试图在一个 sql 查询中做太多事情。这是我尝试过的,也是我尝试后得到的。

SELECT S.stu_fname, S.stu_lname, GT.grade_type_name, 
(sum(SG.grade_earned)/sum(G.grade_possible) * GT.grade_weight) AS Calculated Grade
FROM Student S
INNER JOIN StudentGrade SG ON SG.stu_id = S.stu_id
INNER JOIN Grade G ON SG.grade_id = G.grade_id
INNER JOIN GradeType GT ON G.grade_type = GT.grade_type;

我有这样的东西

James | Fort | HW/QUIZ | 28.2 

我立刻就知道这是错误的,因为 HW/QUIZ 的权重是 20%

当我分解查询并仅测试总和(SG.grade/earned)部分时。我收到了所有学生成绩的总和。我希望查询一次计算单个学生的单个成绩类型的成绩。

感谢任何帮助,我被困住了。我研究了子查询和联接,需要更多帮助来缩小搜索范围以获得答案。

<小时/>

这是我在实现 GROUP BY 后更新的查询。我用这个查询来圆整我的答案。我发现我需要 4 位小数才能保持答案的完整性。

Select S.stu_fname, S.stu_lname, GT.grade_type_name,         
(ROUND((SUM(SG.grade_earned)/SUM(G.grade_possible)), 2) * ROUND((GT.grade_weight/100.0)
, 2) ) as CalculatedGrade
FROM Student S
INNER JOIN StudentGrade SG on SG.stu_id = S.stu_id
INNER JOIN Grade G on SG.grade_id = G.grade_id
INNER JOIN GradeType GT WHERE G.grade_type = GT.grade_type
GROUP BY S.stu_fname, S.stu_lname, GT.grade_type_name;

是否可以将学生的成绩加在一起以获得每个学生的一条记录?

最佳答案

当您使用 SUM 时,您应该使用 group by,尝试以下查询:

SELECT S.stu_fname, S.stu_lname, GT.grade_type_name, 
(sum(SG.grade_earned)/sum(G.grade_possible) * GT.grade_weight) AS Calculated Grade
FROM Student S
INNER JOIN StudentGrade SG ON SG.stu_id = S.stu_id
INNER JOIN Grade G ON SG.grade_id = G.grade_id
INNER JOIN GradeType GT ON G.grade_type = GT.grade_type
GROUP BY S.stu_fname, S.stu_lname, GT.grade_type_name;

关于mysql - SQL Join - 根据成绩类型计算加权学生成绩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com