题解 | #2021年11月每天新用户的次日留存率#

2021年11月每天新用户的次日留存率

https://www.nowcoder.com/practice/1fc0e75f07434ef5ba4f1fb2aa83a450

with tb as (
select uid,dt ,
min(dt) over(partition by uid) as new_dt, #按照uid分组求每个uid 最小日期
lead(dt,1) over(partition by uid order by dt) as next_dt  #偏移作为次日 有无order都行
from 
    (select distinct uid ,date(in_time) as dt
    from tb_user_log
    union 
    select distinct uid,date(out_time) as dt
    from tb_user_log) as tb_active
)

select dt, 
round(sum(case when dt=new_dt and datediff(next_dt,dt)=1 then 1 else 0 end)/#dt=new_dt那这个用户为新用户
sum(case when dt=new_dt then 1 else 0 end ),2) as uv_left_rate
                                        # dt=new_dt且next_dt和new_dt的日期差为1则这个用户为次留新用户
from tb
where date_format(dt,'%Y%m') = 202111
group by dt
having uv_left_rate is not null
order by dt

# select dt,
# round(sum(if(timestampdiff(day,dt,lead_time)=1,1,0))/count(*),2) 
# from(
#     select *, 
#     row_number() over(partition by uid order by dt) rk, 
#     lead(dt,1) over(partition by uid order by dt) lead_time from( select uid,date(in_time) as dt 
#     from tb_user_log 
#     union 
#     select uid,date(out_time) as dt 
#     from tb_user_log )t1)t2 
# where rk = 1
# group by dt 
# having date_format(dt,'%Y-%m') = '2021-11' 
# order by dt

全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务