第一次询问堆栈溢出。
我正在尝试使用两张表(其中一张包含击球统计数据,另一张包含玩家的姓名)来计算一年范围内每年NL和AL的OPS领先者。表格的主键是playerID
打击表提供该打击统计信息。我插入了计算击球率的OPS,基准百分比,击打率,平均值的列,但我想在一年范围内为每个联赛(AL,NL)选择这些类别中的最高领导者。
到目前为止,我的代码是:
SELECT
batting.YearID as 'Year'
, batting.LGID as 'League'
, (SELECT concat(NAMEFIRST, ' ', NAMELAST)
from master
WHERE playerID = batting.playerID
) AS 'Player'
, max(OPS) as 'On-Base Plus Slugging'
FROM batting
WHERE batting.yearID BETWEEN 1959 AND 1969
AND AB > (SELECT AVG(AB) FROM BATTING)
GROUP BY batting.YearID, batting.lgID
我的输出只是每年每个联赛中字母排名第一的球员。我的目标是在每年的范围内,从每个联赛中找到OPS的领导者。我尝试了几种不同的分组方式,但似乎无法使其正常工作。有人可以协助吗?
最佳答案
如果您使用的是SQL Server 2008或更高版本:
;WITH ORDERED_OPS AS(
SELECT PlayerID,
YearID,
LGID,
OPS,
ROW_NUMBER() OVER (PARTITION BY LGID ORDER BY OPS DESC) OPS_Order
FROM batting)
SELECT PlayerID,
YearID,
LGID,
OPS
FROM ORDERED_OPS
WHERE OPS_Order = 1
关于mysql - 如何在一年范围内每年为两个类别选择两个最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47059223/