例如:
GAME_ID GOALIEID TEAMID TEAMSHOTNUM OVERALLSHOT SCORED
2001 57 11 1 1 Y
2001 41 22 1 2 N
2001 57 11 2 3 N
2001 41 22 2 4 N
2001 57 11 3 5 N
2001 41 22 3 6 Y
2001 57 11 4 7 N
2001 41 22 4 8 Y
基于这个简单的例子:我如何查询最连续的“扑救”,也就是一个“守门员”的“n”,现在想象我的数据有多个游戏要看,但为了简单起见,我这里只有一个游戏。
我希望我的结果是这样的:
GAME_ID GOALIEID STREAK
2001 57 3
这将表明“守门员”57在点球大战中连续3次扑救,表明连续最高的扑救次数实际上是3次。请记住,这将跨越成千上万的游戏。但我只玩了一场就简单了。
1条答案
按热度按时间iswrvxsc1#
可以使用使用会话变量的方法。对所有人都有用
GAME_ID
以及GOALIEID
组合。为了正确使用会话变量,我们首先需要对数据集进行排序。所以在一个派生表中,我们按照
GAME_ID
,GOALIEID
,和OVERALLSHOT
; 因为一个独特的连胜是为守门员在特定的比赛中定义的。现在,我们使用这个有序数据集来确定条纹。我们利用
If()
条件逻辑的函数。这里的逻辑是如果我们遇到一个目标(SCORED = 'Y'
),我们将条纹数设置为0(因为它已被破坏);如果上一个GAME_ID
以及GOALIEID
和电流一样,我们增加我们的条纹数;否则,将“条纹数”(streak number)设置为1现在,我们只需再次将此数据集用作派生表
Group By
在GAME_ID
以及GOALIEID
,并使用Max()
函数用于确定特定游戏和守门员的最大连胜数。您还可以参考本教程,说明如何使用会话变量计算行号。
尝试以下代码以获得最大条纹:
rextester演示
输出: