一、连续登录问题
问题:1)、每个用户连续登录最大天数
2)、连续登录大于三天的用户数
分析:本质都是计算用户连续登录天数
方案一:利用排序窗口
select a.user_id
,a.date_rslt
,count(1) as cnt
from (
select
t.user_id
,t.login_time
,date_sub(login_time, num) as date_rslt
from (
select
user_id
,login_time
,row_number() over(partition by user_id order by login_time) as num
from login_log
) t
) a
group by a.user_id,a.date_rslt
方案二、增量加全量
连续访问天数v_days(最新flag值为1,则v_days累加,否则为0)
历史最大访问天数max_days (从max_days、v_days中取最大值)
select
coaleasce(h.user_id,i.user_id) as user_id,
if(i.user_id is not null,v_days+1,0) as v_days,
greatest(max_days,if(i.user_id is not null,v_