我正在处理一些包含播放状态的日志数据 play
以及 end
. 在游戏中,客户将报告 play
多次但是什么时候 end
看来,这意味着游戏结束了,就像
user_id status timestamp
a play xxx
a play xxx
a play xxx
a end xxx
b play xxx
b end xxx
c play xxx
c play xxx
c end xxx
a play xxx
a play xxx
a end xxx
a play xxx
a end xxx
现在,我可以用 row_number()
计算 user_id
游戏数超过2 play
状态如下:
# I realize this is a wrong query...
select count(distinct user_id) as cnt_uid
(select
user_id,status,timestamp,
row_number() over (partition by user_id, status, order by timestamp) as rn
from tableA) a
where rn>=2
但是如果我需要计算超过2的游戏数 play
状态(例如: user A
有2场比赛,超过2场 play
地位和地位 user C
有1),怎么做?感谢您的帮助。
- 附言:预期的结果只是一个游戏的数量超过2
play
对于上述数据,结果为3
.
1条答案
按热度按时间mpbci0fu1#
您可以使用
status = 'end'
. 然后一次又一次地聚合: