Выберите Max () SUM () для группы - PullRequest
0 голосов
/ 20 января 2020
SELECT tname , pname , SUM(Goals)
FROM team as t , player as p , matches as m 
WHERE t.TID=p.TID AND p.PNB=m.PNB
Group BY pname , tname
ORDER BY `SUM(Goals)`  DESC

Мне нужно выбрать только игрока, у которого больше голов в каждой команде. Примером этого будет только Луис Суарес из F. C Барселона и Мунир из Севильи ....

I need to Select only the player who have more goals in each team.Example it will shown only Luis Suarez from F.C Barcelona and Munir fROM SEVILLA ....

1 Ответ

2 голосов
/ 20 января 2020

Используйте правильный, явный, стандартный JOIN синтаксис. Запятые были заменены на 20 лет a go.

Затем вам нужны оконные функции:

SELECT tp.*
FROM (SELECT t.tname, p.pname, SUM(m.Goals) as goals,
             RANK() OVER (PARTITION BY t.tname ORDER BY SUM(m.Goals) DESC) as seqnum
      FROM matches m JOIN
           team t
           ON t.TID = p.TID JOIN
           player p  
           ON p.PNB = m.PNB
      GROUP BY p.pname, t.tname
     ) tp
WHERE seqnum = 1
ORDER BY goals DESC;

Возвращает всех игроков с самыми высокими значениями. Если вам нужна только одна строка, используйте ROW_NUMBER() вместо RANK().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...