我有这样的数据,
Name |Exam_ID|Score
------+-------+------
Matt |12 | 87
Matt |12 | 85
Andy |10 | 89
Lisa |11 | 32
Lisa |11 | 68
Andy |11 | 38
Matt |10 | 70
Lisa |10 | 87
我想要记录那些分数,但只有那些名称和exam_id不同的分数。如果同一个名字上有多个相同的exam_id,则会获得最高分。最终结果我想这样:
Name |Score
------+------
Matt | 157
Andy | 127
Lisa | 155
马特得到3分(87,85,70)。但是由于87和85使用相同的exam_id,我只需要取得最高分并将其与不同得分的SUM一起得到不同的exam_id,这使得他的总分为87 + 70 = 157
我一直在尝试使用MAX,但我不能这样做
SELECT Name, MAX(Exam_ID), SUM(Score) from RESULT
group by NAME;
答案 0 :(得分:2)
您需要两个级别的聚合:
select name, sum(max_score)
from (select name, exam_id, max(score) as max_score
from result
group by name, exam_id
) ne
group by name;
答案 1 :(得分:0)
您需要利用结构化查询语言的结构化部分,并进行两级查询
SELECT Name, SUM(Score) AS Score
FROM (
SELECT Name, Exam_ID, MAX(Score) AS Score
FROM Result
GROUP BY Name
) BestScoresPerExam
GROUP BY Name
内部查询获得每个考试的最佳分数。外面的一个总和得分。
答案 2 :(得分:0)
试试这个......
select name, exam_id, sum(Score) as max_score from result group by name, exam_id