2013-08-14 9 views
5

mój stółZnajdź sumę punktów i grupowanie

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

enter image description here

Chciałbym, aby znaleźć punkt sumie Szkoły. Używam następującego kodu.

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 

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

mój problem, identyfikator 1,2,3 są zwycięzcy konkursu grupowej. Otrzymują 5 punktów indywidualnie. Ale w przypadku tej konkurencji SZKOŁA otrzyma tylko 5 punktów, a nie 15. Grupa może zostać zidentyfikowana przez tego samego ChessNO.

Więc moje ostatnie wyjście wygląda

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

Byłoby wdzięczny jeśli ktoś może mi pomóc,

Odpowiedz

2

Oczywiście, można zrobić kilka optymalizacji. Ale to działa!

SELECT two.TOTALC1, one.TotalC2, one.TotalC3, one.TotalOne + two.TOTALC1 as TotalAll from 
(select School, 
    SUM(C2Points) AS TotalC2, 
    SUM(C3Points) AS TotalC3, 
    SUM(C2Points + C3Points) AS TotalOne 
FROM students GROUP BY School 
ORDER BY TotalOne DESC) one 
left join (select school, sum(ma) as TOTALC1 from (select school, chess, max(grouppoint) as ma from students group by school, chess) as b group by school) two 
on one.school = two.school 
0
SELECT School, SUM(GroupPoint) AS TotalC1, SUM(C2Points) AS TotalC2, 
    SUM(C3Points) AS TotalC3, SUM(GroupPoint + C2Points + C3Points) AS TotalAll 
    FROM students GROUP BY Chess ORDER BY TotalAll DESC LIMIT 6 
+0

ten kod nie działa przyjacielu. W każdym razie dzięki za twój wysiłek. – user2594154

2

Try This

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 

wyjście

| SCHOOL | SUM(GROUPPOINT) | SUM(TOTALC2) | SUM(TOTALC3) | TOTAL | 
------------------------------------------------------------------- 
| School1 |    5 |   4 |   25 | 34 | 
| School2 |    13 |   49 |   3 | 65 | 
Powiązane problemy