| PlayID | Passing_Yards | Receptions | Position | Player_Name | Rec_Yds
------------------------------------------------------------------------------
| 1234 | 0 | 1 | WR | Bill Schmill | ???
------------------------------------------------------------------------------
| 1234 | 20 | 0 | QB | Joe Schmoe | ???
------------------------------------------------------------------------------
我正在使用NFL SQL数据库来尝试计算玩家基于特定“游戏ID”号码的接收码数。没有用于“接收码”的列,因此我需要根据同一个游戏中的“传球码”(使用游戏ID)推导出该列。如何为“接收码”创建一个新列,该列将根据该游戏的“游戏ID”和“传球码”进行计算?基本上,接收将需要等于1播放,我认为你需要根据播放ID加总?
类似的东西:
SELECT PlayID, Passing_Yards, Receptions, Position, Player_Name, Sum(Passing_Yards)
FROM nfldb
GROUP BY PlayID, Passing_Yards, Receptions, Position, Player_Name
但这并不能满足我的需要。
答案 0 :(得分:1)
我认为窗口功能会做你想要的:
select n.*,
(case when reception = 1
then max(passing_yards) over (partition by playid)
else 0
end) as receiving_yards
from nfldb n;
max()
与over
的使用是ANSI标准语法,大多数数据库都支持这种语法。