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

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

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

-- 思路:

-- 1.统计出每个用户的登录时间和最早登录时间

-- 2.然后统计2021年11月每天新用户的次日留存率(保留2位小数)

-- 本题次日留存用户定义:用户登录时间与最早登录时间的差值为1,则是次日留存用户,计算逻辑如下:

-- if(datediff(uv_dt, min_in_dt)=1, 1,0)

-- 思路:
--      1.统计出每个用户的登录时间和最早登录时间
--      2.然后统计2021年11月每天新用户的次日留存率(保留2位小数)
-- 本题次日留存用户定义:用户登录时间与最早登录时间的差值为1,则是次日留存用户,计算逻辑如下:
--      if(datediff(uv_dt, min_in_dt)=1, 1,0)
with t as(
select 
    a.uid,
    min_in_dt,
    uv_dt
from (
select
    uid,
    date(in_time) as uv_dt
from tb_user_log
union
select 
    uid,
    date(out_time) as uv_dt
from tb_user_log
) as a 
join (
    select 
        uid,
        min(date(in_time)) as min_in_dt
    from tb_user_log
    group by uid
) as b on a.uid = b.uid
)

select 
    min_in_dt as dt,
    round((sum(if(datediff(uv_dt, min_in_dt)=1, 1,0))/count(distinct uid)), 2) as uv_left_rate
from t 
-- 这里 where过滤条件等价于HAVING DATE_FORMAT(dt, "%Y-%m") = "2021-11"
where date_format(min_in_dt, '%Y-%m') = '2021-11'
group by min_in_dt
order by min_in_dt
SQL大厂面试题 文章被收录于专栏

牛客网sql大厂面试题题解~

全部评论

相关推荐

09-13 10:40
门头沟学院 Java
听别人介绍,刷了一堆力扣题,考场上写函数,一直无法通过。赛后才知道要自己写输入输出,力扣害人不浅
Silencer76:输入输出练习题单,请https://www.nowcoder.com/exam/oj?page=1&tab=%E7%AE%97%E6%B3%95%E7%AC%94%E9%9D%A2%E8%AF%95%E7%AF%87&topicId=372
投递中国电信等公司10个岗位
点赞 评论 收藏
分享
西二旗混子:不需要在简历上下功夫了,把时间放在找岗位上,海投2000个
无实习如何秋招上岸
点赞 评论 收藏
分享
07-20 11:20
门头沟学院 Java
Alan_01:看到都是黑马点评跟苍穹外卖我就放心了
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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