案例2:打地鼠游戏记录求连续命中次数
--beat 1 代表击中 0 代表未击中
uid,seq,beat
u01,1,1
u01,2,0
u01,3,1
u01,4,1
u01,5,0
u01,6,1
u02,1,1
u02,2,1
u02,3,0
u02,4,1
u02,5,1
u02,6,0
u02,7,0
u02,8,1
u02,9,1
u03,1,1
u03,2,1
u03,3,1
u03,4,1
u03,5,1
u03,6,0
求:连续击中3次以上的用户
参考示例:
+------+---------+
| uid | lianji |
+------+---------+
| u03 | 5 |
+------+---------+
---------------------------------------------------------------
select uid, num1, count(1) as num2
from (select uid, seq, beat, num, seq - num as num1
from (select uid, seq, beat, row_number() over(distribute by uid sort by seq) as num
from test02
where beat != 0) a) b
group by uid, num1
having num2 >= 3;