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

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

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


select 
user_grade,
round(count(uid)/max(cnt),2) as ratio
from (
select
uid,
cnt,
case when early<7 then '新晋用户'
when late>=30 then '流失用户'
when late>=7 then '沉睡用户'
else '忠实用户' end as user_grade
from(
select 
uid,
cnt,
datediff(time,min(in_time)) as early, #最早活跃
datediff(time,max(in_time)) as late #最晚活跃
from tb_user_log,(select count(distinct uid) as cnt,max(in_time) as time from tb_user_log) t2
group by 1,2
) t1
) t2 
group by 1
order by 2 desc
  1. 计算总人数和当前时间 并连接上去
  2. 计算每个用户最早和最晚活跃时间,从而计算据当前时间最早活跃和最晚活跃的间隔
  3. 分层逻辑:
  4. 最早在7天内,显然新晋
  5. 最晚超过30天 显然流失
  6. 最晚超过7 显然沉睡
  7. 剩余都是忠实 切记7天内是相差小于等于6 如7.7和7.1 就包含了7天 但是差为6
  8. 计算各分层占比

全部评论

相关推荐

04-19 10:50
门头沟学院 Java
想奋斗的小山竹在改简...:学院本能过简历筛选吗,我怎么看一些一本都过不了
点赞 评论 收藏
分享
04-07 12:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务