我正在尝试分析一些棒球统计数据,但在实现看起来应该是一项简单的任务时遇到了一些麻烦。看一下以下结果集:
GAME_PK REC_SEQ BatterId PlayNumber EventType
287576 6 462101 1 single
287576 14 519048 2 single
287576 25 435079 3 strikeout
287576 26 435079 4 stolen_base_home
287576 28 435079 5 stolen_base_2b
PlayNumber 列是由我使用 ROW_NUMBER() OVER (ORDER BY GAME_PK, REC_SEQ) 生成的。其余的直接来自 MLB 统计数据库。REC_SEQ 是游戏内事件的序号。EventType 本质上是 at-bat 的结果。
我希望 PlayNumber 仅在 BatterId 更改时才增加。但它必须尊重 REC_SEQ 的顺序。所以我认为我不能使用 RANK 或 DENSE_RANK,但这些似乎非常接近我的需要。
我希望我的结果集如下所示:
GAME_PK REC_SEQ BatterId PlayNumber EventType
287576 6 462101 1 single
287576 14 519048 2 single
287576 25 435079 3 strikeout
287576 26 435079 3 stolen_base_home
287576 28 435079 3 stolen_base_2b
任何帮助表示赞赏。
谢谢!
编辑:在一场比赛中,击球手可以出现不止一次。每次出场都应该为他分配一个新的 PlayNumber。基本上,每个新的击球手都需要一个新的 PlayNumber。