题解 | #日活与每日次日留存率#

日活与每日次日留存率

https://www.nowcoder.com/practice/18b168ada98d4bdb9108444443cea7d3

# 日活dau = 当日登入总用户数
# 每日次日留存率 = 连续登入用户数 / dau
-- 先写子查询,计算日活和次活
  SELECT
    u1.visit_date,
    COUNT(u1.id) AS dau ,
    COUNT(u2.id) AS next_dau
    FROM user_visit_log u1
    LEFT JOIN user_visit_log u2 ON u1.id = u2.id 
        AND DATEDIFF(u2.visit_date,u1.visit_date) = 1  --技巧,利用id和时间差为1进行匹配
    GROUP BY u1.visit_date
-- 这样就可以计算得到日活和次活;
然后从上述子查询提取日活,并求出次日留存率
完整代码:
SELECT 
    visit_date,
    dau,
   (next_dau/dau) AS next_day_per  -- 计算次日留存率
FROM (
    SELECT
    u1.visit_date,
    COUNT(u1.id) AS dau ,
    COUNT(u2.id) AS next_dau
    FROM user_visit_log u1
    LEFT JOIN user_visit_log u2 ON u1.id = u2.id 
        AND DATEDIFF(u2.visit_date,u1.visit_date) = 1
    GROUP BY u1.visit_date
) AS t1



全部评论

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务