0
这感觉就像一个间隙和岛屿问题,窗口函数看起来像是正确的工具,但我似乎无法得到一个工作结果。寻找导致事件发生的行并将它们视为一个序列
我的数据是这样的(注:游戏ID是一个UUID,在这里显示为可读性计数器):
GameID User Date Win
100 A 10/11/2012 0
101 A 10/12/2012 0
102 B 10/11/2012 0
103 B 10/13/2012 1
104 B 10/14/2012 0
105 C 10/10/2012 0
106 C 10/12/2012 0
107 C 10/13/2012 1
108 C 10/14/2012 0
109 C 10/15/2012 0
110 C 10/16/2012 0
111 C 10/17/2012 1
112 D 10/11/2012 0
113 D 10/13/2012 1
114 D 10/20/2012 0
115 D 10/21/2012 0
我期待捕捉(数/聚合成数组)的损失序列用户在每次胜利之前都有。举例来说,如果你看看用户B他们有一场胜利,那胜利在它之前有一个损失。如果你看看用户C,ID 107的胜利前面有两个损失,而ID 111的胜利前面有3个损失。
我期待应用数组聚合array_agg
并将前面的损失附加到赢。最后,我想下面的结果:
GameID User Date Win LosingStreak
103 B 10/13/2012 1 [102]
107 C 10/13/2012 1 [105, 106]
111 C 10/17/2012 1 [110,109,108]
113 D 10/13/2012 1 [112]
我一直在玩partition by User order by date
但我需要一场胜利来“重置”的每个分区,我似乎无法环绕解决它的任何方式我的头。 lead()和lag()也没有帮助,因为我需要lead(x),其中x是每个分区的可变数字。
非常聪明。非常感谢。 – maxTrialfire