3

我有这个

------------------------------------
 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,提前谢谢你

4

2 回答 2

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上查看。

于 2012-05-16T10:56:25.200 回答
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
于 2012-05-16T11:07:45.490 回答