简体   繁体   English

为组选择 SUM() 的 Max()

[英]Select Max() of SUM() for a Group

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

I need to Select only the player who have more goals in each team.Example it will shown only Luis Suarez from FC Barcelona and Munir fROM SEVILLA ....我只需要选择在每支球队都有更多进球的球员。例如,它将只显示来自巴塞罗那足球俱乐部的路易斯苏亚雷斯和来自塞维利亚的穆尼尔......

我只需要选择在每支球队都有更多进球的球员。例如,它将只显示来自 F.C Barcelona 的 Luis Suarez 和来自 SEVILLA 的 Munir ....

Use proper, explicit, standard JOIN syntax.使用正确、明确、标准的JOIN语法。 Commas were superseded over 20 years ago.逗号在20多年前被取代。

Then, you want window functions:然后,您需要窗口函数:

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;

This returns all players with the highest values.这将返回具有最高值的所有玩家。 If you want just one row, use ROW_NUMBER() instead of RANK() .如果您只需要一行,请使用ROW_NUMBER()而不是RANK()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM