如何写一个总和并计算下面的例子?

时间:2013-01-19 10:35:04

标签: mysql sql database select

以下SQL查询总结了会话中每个问题的每个惩罚标记:

SELECT s.SessionId,q.QuestionId,SUM(pm.PenaltyMarks)
    FROM Session s
    INNER JOIN Question q ON s.SessionId = q.SessionId
    INNER JOIN Penalty_Marks pm ON q.QuestionId = pm.QuestionId
    WHERE (s.SessionId = 30)
    GROUP BY s.SessionId,q.QuestionId

以下是输出显示的内容:

SessionId  QuestionId  Sum(pm.PenaltyMarks)
30         77          4
30         38          3
30         39          4

但我想要发生的事情现在总结了会议中的所有惩罚标记。因此,在上面的示例中,它将在会话30中将惩罚标记加在一起,以将总惩罚标记输出为11。但我的问题是如何实现这一目标呢?

以下是它的样子:

SessionId  TotalPenaltyMarks
30         11

1 个答案:

答案 0 :(得分:2)

删除q.QuestionId

SELECT  s.SessionId, 
        SUM(pm.PenaltyMarks) TotalPenaltyMarks
FROM    Session s
        INNER JOIN Question q ON s.SessionId = q.SessionId
        INNER JOIN Penalty_Marks pm ON q.QuestionId = pm.QuestionId
WHERE   s.SessionId = 30
GROUP   BY s.SessionId

GROUP BY子句已经是可选的,因为您已经过滤了特定的SessionId