在mysql中获取字段的总和,在重复字段的情况下选择最大值

时间:2012-05-16 10:48:15

标签: mysql sum distinct max

我有这个

------------------------------------
 course_id  | total marks | year  
------------------------------------
   1              50         1   -------> I want to remove this from the sum               
   2              50         1
   3              50         1  
   1              100        2  
------------------------------------

我真的不知道如何做到这一点,

我有3个不同的课程, 我希望获得总分数的总和,但考虑到最大年份数,我会得到一个截然不同的course_id,结果应该是200,谢谢你提前

2 个答案:

答案 0 :(得分:2)

您需要使用子查询来确定每个课程的最大年份,然后再次将其与表格连接以获得标记:

SELECT SUM(`total marks`)
FROM   `table`
  NATURAL JOIN (
    SELECT course_id, MAX(year) AS year
    FROM   `table`
    GROUP BY course_id
  ) AS y

sqlfiddle上查看。

答案 1 :(得分:2)

这很简单:

SELECT SUM(m) FROM (
                    SELECT   total_marks AS m
                    FROM     table AS t
                    WHERE    year = (
                                     SELECT MAX(year) 
                                     FROM   table
                                     WHERE  course_id = t.course_id
                                    )
                   ) AS v