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 に答える