gpt4 book ai didi

mysql - 如何在下面的示例中正确执行 SQL 中的计数

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:56 25 4
gpt4 key购买 nike

我在下面有一个数据库示例:

session 表:

SessionId (PK auto)  SessionName
1 SODJW

问题表:

QuestionId (PK auto)  QuestionContent  SessionId (FK) refer to Session
1 Blah 1
2 Blah Blah 1
3 Blah Blah Blah 1

Penalty_Marks 表:

PenaltyAnswerId  PenaltyMarks  QuestionId (FK) refer to Question
1 1 1
2 0 1
3 1 2
4 2 3
5 2 3

现在我想执行一个计算 session 的 PenaltyMarks 的 SQL。因此,要做到这一点,我们需要知道哪个 QuestionId 属于 SessionId,然后计算分数。

我的问题是如何编写此 SQL 才能在 SessionId 中找到 QuestionId,这样我们就可以计算罚分了?我问这个的原因是因为它给了我不正确的计数值。

我的尝试:

SELECT COUNT(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 = 1;

最佳答案

您的查询返回行数,而不是罚分的总数。您还说您需要查看每个 session 的问题以及总罚分,因此您必须按 session ID 和问题 ID 进行分组。

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
GROUP BY s.SessionId,q.QuestionId

SQL Fiddle Demo

关于mysql - 如何在下面的示例中正确执行 SQL 中的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409740/

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