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

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

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

with zb3 as (with zb2 as (with zb as (select uid,out_time,max(out_time) over() as max_time,/*离现在最近时间*/
first_value(out_time) over(partition by uid order by out_time desc) near_time,/*用户最近登录时间*/
first_value(out_time) over(partition by uid order by out_time) first_time /*用户第一次登录时间*/
from tb_user_log)
select *,datediff(max_time,near_time) diff_time /*最近时间和最近登录时间差*/
from zb
where out_time = near_time) /*去重,只留下最近登录时间,其他时间没有计算意义*/
select uid,(case when out_time=first_time and diff_time <=6 then '新晋用户' /*当最近登录时间和第一次登录时间一样,该用户则为新用户*/
			when diff_time <=6 and out_time!=first_time then '忠实用户'
            when diff_time <=29 then '沉睡用户' 
            else '流失用户' end) user_grade,count(*) over() sum_p 
from zb2)
select user_grade,round(count(uid)/max(sum_p),2) ratio
from zb3
group by user_grade
order by ratio desc,user_grade

全部评论

相关推荐

点赞 评论 收藏
分享
06-20 21:22
已编辑
门头沟学院 Java
纯真的河老师在喝茶:答应了就跑啊,实习随便跑啊,别被pua了,md就是找个廉价劳动力,还平稳过度正式工,到时候跟你说没转正
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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