5

私のテーブル

参考: http ://www.sqlfiddle.com/#!2/6be93/1

ここに画像の説明を入力

ここで、学校の合計ポイントを見つけたいと思います。次のコードを使用しています。

  SELECT School, SUM(GroupPoint) AS TotalC1, SUM(C2Points) AS TotalC2,
  SUM(C3Points) AS TotalC3, SUM(GroupPoint + C2Points + C3Points) AS TotalAll 
  FROM students GROUP BY School ORDER BY TotalAll DESC LIMIT 6

参照: http://www.sqlfiddle.com/#!2/25ed3/2

私の問題は、ID 1,2,3 がグループ コンテストの勝者です。したがって、彼らは個別に5ポイントを獲得します。しかし、その大会では、SCHOOL は 15 ポイントではなく 5 ポイントしか獲得できません。グループは、同じ ChessNO によって識別できます。

だから私の最終的な出力は

 SCHOOL   TOTALC1   TOTALC2  TOTALC3 TOTALALL
 School2   13       49       3       65       
 School1   5        4        25      34

誰かが私を助けてくれたらありがたいのですが、

4

3 に答える 3

2

これを試して

SELECT 
  School,
  sum(GroupPoint),
  sum(TotalC2),
  sum(TotalC3),
  sum(GroupPoint) + sum(TotalC2) + sum(TotalC3) as total
FROM (
  SELECT
    School,
    MAX(  GroupPoint) AS GroupPoint,
    SUM(  C2Points) AS TotalC2,
    SUM(  C3Points) AS TotalC3
  FROM 
    students 
  GROUP BY 
    School,
    Chess
) subquery
GROUP BY 
  School

出力

|  SCHOOL | SUM(GROUPPOINT) | SUM(TOTALC2) | SUM(TOTALC3) | TOTAL |
-------------------------------------------------------------------
| School1 |               5 |            4 |           25 |    34 |
| School2 |              13 |           49 |            3 |    65 |
于 2013-08-14T08:39:25.890 に答える