MYSQL计算结果的总和
我正在mysql 5.0中构建一个查询来计算学生的学期成绩。初始表studentItemGrades包含作业列表等,用于计算最终分数。每个作业都有一个可能的分数、等级和权重。计算应将所有类似加权项目分组,并根据任务到期的日期范围提供SUMGRADE/SUMPOSSIBLESCORE。我遇到的问题是所有单个加权分数的最终总和。例如,结果当前会产生以下结果:MYSQL计算结果的总和,mysql,sum,Mysql,Sum,我正在mysql 5.0中构建一个查询来计算学生的学期成绩。初始表studentItemGrades包含作业列表等,用于计算最终分数。每个作业都有一个可能的分数、等级和权重。计算应将所有类似加权项目分组,并根据任务到期的日期范围提供SUMGRADE/SUMPOSSIBLESCORE。我遇到的问题是所有单个加权分数的最终总和。例如,结果当前会产生以下结果: CourseScheduleID sDBID AssignedDate DueDate Weight Weighte
CourseScheduleID sDBID AssignedDate DueDate Weight WeightedGrade
1 519 2010-08-26 2010-08-30 10 0.0783333333333333
1 519 2010-09-01 2010-09-03 20 0.176
1 519 2010-09-01 2010-09-10 70 0.574
从查询中:
SELECT CourseScheduleID, sDBID, AssignedDate, DueDate, Weight,
((SUM(Grade)/SUM(PossibleScore))*(Weight/100)) AS WeightedGrade
FROM studentItemGrades
WHERE DueDate>='2010-08-23'
AND DueDate<='2010-09-10'
AND CourseScheduleID=1
AND sDBID=519
AND Status>0
GROUP BY Weight
问题:我现在如何将加权的Grade输出中的三个结果相加?顺便说一下,这是一个更大的查询的一部分,用于计算特定校园内所有课程的所有分数
提前感谢您的帮助。您可以使用子查询,如下所示:
SELECT SUM(WeightedGrade) FROM
(
SELECT CourseScheduleID, sDBID, AssignedDate, DueDate, Weight,
((SUM(Grade)/SUM(PossibleScore))*(Weight/100)) AS WeightedGrade
FROM studentItemGrades
WHERE DueDate>='2010-08-23'
AND DueDate<='2010-09-10'
AND CourseScheduleID=1
AND sDBID=519
AND Status>0
GROUP BY Weight
) t1
为了对这三个结果求和,您需要使用另一个带有group by的select重新查询此select的结果。这可以通过使用子查询使用单个sql语句来完成
SELECT sq.CourseScheduleID, sq.sDBID, SUM(sq.WeightedGrade) as FinalGrade
FROM
(
SELECT CourseScheduleID, sDBID, AssignedDate, DueDate, Weight,
((SUM(Grade)/SUM (PossibleScore))*(Weight/100)) AS WeightedGrade
FROM studentItemGrades WHERE DueDate>='2010-08-23' AND DueDate<='2010-09-10'
AND CourseScheduleID=1 AND sDBID=519 AND Status>0 GROUP BY Weight
) AS sq
GROUP BY sq.CourseScheduleID, sq.sDBID
天哪!谢谢JL。我试过所有显而易见的事情。是的,就是这样。谢谢