题解 | #统计活跃间隔对用户分级结果#

统计活跃间隔对用户分级结果

https://www.nowcoder.com/practice/6765b4a4f260455bae513a60b6eed0af

1.需要首先整理出每个用户uid的最早活跃时间和最晚活跃时间:min(out_time)和max(out_time),group by uid (命名为表1)

2.今天:select max(date(out_time)) from 原表 ,也就是整个表数据中的最大日期

3.划分等级,当用户最晚活跃时间距离今天>=30天,则为流失用户,>=7天,则为沉睡用户,<7天并且最早活跃时间距离今天<7天,为新增用户,否则为忠实用户

4.计算比例,按照等级分组,count(uid)即为每个等级的用户数,select count(distinct uid from 原表)即为总的用户数,相除为每个等级的用户占比

5.细节:保留小数位和降序排序

select case when datediff((select date(max(out_time))from tb_user_log),uv_date)>=30 
then '流失用户' 
when datediff((select date(max(out_time))from tb_user_log),uv_date)>=7 
then '沉睡用户' 
when datediff((select date(max(out_time))from tb_user_log),uv_date)<7 and datediff((select date(max(out_time))from tb_user_log),new_dt)>=7
then '忠实用户'
else '新晋用户'
end  as user_grade,round(count(uid)/(select count(distinct uid)from tb_user_log),2) as ratio
from(
select uid,max(date(out_time)) as uv_date,min(date(out_time)) as new_dt from tb_user_log group by uid) t 
group by user_grade
order by ratio desc

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务