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

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

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

with idList as (select uid,(case 
when timestampdiff(day,last_time,cur_date)>29 then '流失用户'
when timestampdiff(day,last_time,cur_date)>=7 then '沉睡用户'
when timestampdiff(day,register_time,cur_date) < 7 then '新晋用户'
when timestampdiff(day,last_time,cur_date) < 7 
     and timestampdiff(day,register_time,cur_date)>7 then '忠实用户'
end) as user_grade,
count(uid)over() as allnumm   
from (
select 
    uid,
    min(left(in_time,10)) as register_time,
    max(left(out_time,10)) as last_time,
    MAX(MAX(DATE(out_time)))OVER() cur_date
    from tb_user_log group by uid
) t1
) 
select user_grade,round(count(uid)/avg(allnumm),2)as ratio from idList group by user_grade 
order by ratio desc

本题的难点需要知道时间上的区间 比如近七天其实就是[T-6,T],那近30天的意思也能理解成[T-29,T],所以在判断流失用户的时候,应该判断timestamp的值大于29 而非>= 29,同理判断是不是新晋用户也应该判断是否<7 而不是<= 7

全部评论

相关推荐

今天 15:47
已编辑
陕西理工大学 财务
认真搞学习:这个真喷不了,你是我见过最美的牛客女孩
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务