连续登录最长天数的用户明细

背景:产品作了一个周期7天活动,用户能够每一天解锁一个任务,完成后发放奖励;微信

需求:用户连续登录明细数据及连续登录天数;app

目的:用户参与活动的兴趣度;ui


活动海报图:
spa


分析思路:.net


明细数据:3d


-- 根据用户ID分组按日期排序,将日期和分组序号相减获得连续登录的开始日期,若是开始日期相同说明连续登录orm

- 日期减去分区排序的序号,若是新日期相等,则连续登录  blog


汇总结果排序


附上代码ci


with, tmp_da_user as (

select

to_date(ds,'yyyymmdd') as ds

,uid

,count(distinct ds) as 完整天数

from tmp_t_user_takse_detail

where status_name = '完成'

and uid in ('203111313364823804','1833903495100023')

group by

ds

,uid

)


, tmp_da_user_diff as (

select

ds

,uid

,完整天数

,dateadd(ds, -ROW_NUMBER() OVER(PARTITION BY uid ORDER BY ds asc ),'dd') AS diff_rn

-- 注意这里是减法;日期减去分区排序的序号,若是新日期相等,则连续登录

from tmp_da_user

)


select

uid

,min(ds) as start_ds -- 连续登录的开始时间

,max(ds) as end_ds -- 连续登录的结束时间

,count(1) as continuous_day -- 连续登录的天数

,datediff(diff_rn, lag(diff_rn, 1) over(partition by uid order by diff_rn),'dd') interval_day-- 间隔多少天没交易

from tmp_da_user_diff

group by

uid

,diff_rn



补充问题:

如何取用户连续登录超过3天的明细数据?



本文分享自微信公众号 - SQL数据分析(dianwu_dw)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索