簡體   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

我只需要選擇在每支球隊都有更多進球的球員。例如,它將只顯示來自巴塞羅那足球俱樂部的路易斯蘇亞雷斯和來自塞維利亞的穆尼爾......

我只需要選擇在每支球隊都有更多進球的球員。例如,它將只顯示來自 F.C Barcelona 的 Luis Suarez 和來自 SEVILLA 的 Munir ....

使用正確、明確、標准的JOIN語法。 逗號在20多年前被取代。

然后,您需要窗口函數:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM