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

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

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

-- 用max函数取最大日期作为当天日期来衡量7天的标准,再获取每个用户的最小活跃日期和最大活跃日期。
-- 忠实用户:用户的最小活跃日期与当天日期的差值大于6,且最大活跃日期与当天日期差值小于等于6 
-- 新晋用户:用户的最小活跃日期与当天日期的差值小于等于6;
-- 沉睡用户:用户的最大活跃日期和当天日期的差值大于6;
-- 流失用户:用户的最大活跃日期和当天日期的差值大于29;
-- 使用case when函数对以上用户进行统计
select user_grade,round(count(uid)/(select count(distinct uid) from tb_user_log),2) as ratio 
from (
select uid,
(case 
when datediff(dt,min_dt) > 6 and datediff(dt,max_dt) <= 6 then "忠实用户" 
when datediff(dt,min_dt) <= 6 then "新晋用户" 
when datediff(dt,max_dt) > 6  and datediff(dt,min_dt) < 29 then "沉睡用户" 
when datediff(dt,max_dt) > 29 then "流失用户" 
else "其他" 
end ) user_grade 
from (
select uid,min(date(in_time)) min_dt ,max(date(in_time)) as max_dt ,(select max(date(in_time)) from tb_user_log) as dt 
from tb_user_log 
group by uid 
) t1 
) t2 
group by user_grade  
order by ratio  desc

全部评论

相关推荐

想run的马里奥在学...:这个学历帮你扫平百分之80的障碍,投就完了,这会找不到就等3月暑期一样能找到
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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