计算某日志中连续活跃天数
类似问题:
- 找出连续活跃天数大于7天的用户
- 计算连续活跃天数大于7天的用户总数
思路 :
- 子查询:先按uid分窗口排序,按照登陆日期排序
- 外层:使用 date_sub 控制连续
- sql如下(灵活使用)
select uid, count(*) from (select uid,login_date,row_number()over(partition by uid order by login_date desc) rm from user_au) tmp group by uid,date_sub(login-date,rm) having count>=7 --连续活跃7天的
计算某日志中连续不活跃天数
类似问题:
- 找出连续不活跃天数大于7天的用户
- 计算连续不活跃天数大于7天的用户总数
思路 :
- 子查询:先按uid分窗口排序,取窗口当前行和前一行
- 子查询:时长相减,并排序
- 外层:取最大
- sql如下(灵活使用)
select uid,gap_day from (select uid,login_date-rm as gap_day,row_number() over(partition by uid order by login_date-rm desc ) rn from (select uid,login_date,lag(login_date,1)over(partition by uid order by login_date desc) rm from user_au)tmp )tmp1 where rn=1