1

以下の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
4

1 に答える 1

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

于 2013-01-19T10:36:32.653 に答える