第一次询问堆栈溢出。
我正在尝试使用两个表来计算一年范围内每年的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的领导者。我尝试了几个不同的分组,但似乎无法让它工作。有人可以帮忙吗?
答案 0 :(得分:0)
如果您使用的是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