Hao*_*Xie 5 mysql group-by sum distinct
我有三个表,结构如下所示。
该表(称为contest_submissions)存储提交和竞赛的关系。
ContestID | SubmissionID
1 1000
1 1001
1 1002
1 1003
Run Code Online (Sandbox Code Playgroud)
第二个表(称为submissions)存储提交的详细信息:
SubmissionID | ProblemID | User | Score | Time
1000 1000 A 100 1000
1001 1000 A 40 1250
1002 1001 A 50 1500
1003 1001 B 20 1750
Run Code Online (Sandbox Code Playgroud)
另一个表(称为contest_contestants)包括:
ContestID | User
1 A
1 B
Run Code Online (Sandbox Code Playgroud)
我写了以下SQL:
SELECT *, (
SELECT SUM(score)
FROM contest_submissions cs
NATURAL JOIN submissions
WHERE user = cc.user
AND SubmissionID = cs.SubmissionID
) AS TotalScore, (
SELECT SUM(Time)
FROM contest_submissions cs
NATURAL JOIN submissions
WHERE user = cc.user
AND SubmissionID = cs.SubmissionID
) AS TotalTime
FROM contest_contestants cc
WHERE contestID = 1
Run Code Online (Sandbox Code Playgroud)
我得到以下结果(假设ContestID = 1):
contestID | User | Total Score | Total Time
1 A 190 3750
1 B 20 1750
Run Code Online (Sandbox Code Playgroud)
哪里190 = 100 + 40 + 50。
但是,我想得到以下结果:
contestID | User | Total Score | Total Time
1 A 150 2500
1 B 20 1750
Run Code Online (Sandbox Code Playgroud)
其中150 = MAX(100, 40) + 50,因为100和40来自相同的问题(具有相同的ProblemID)。
我该怎么办?
顺便说一句,我正在使用 MySQL。
你可以尝试这样的事情:
select User, sum(MaxScore)
from
(
select User, ProblemID, max(Score) as MaxScore
from submissions
group by User, ProblemId
) as t
group by User
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |