题解 | #计算用户的平均次日留存率#

计算用户的平均次日留存率

https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453

WITH a AS (
  SELECT 
    distinct device_id, date
  FROM question_practice_detail
),
c as (
select *,RANK() OVER(PARTITION BY device_id ORDER BY date) AS rk,
    DATE_ADD(date, INTERVAL 1 DAY) AS d_plus_1
    from a
),
b AS (
  SELECT 
    *, 
    LEAD(date, 1) OVER(PARTITION BY device_id ORDER BY date) AS act_d
  FROM c
)
SELECT 
  COUNT(CASE WHEN act_d = d_plus_1 THEN 1 ELSE NULL END) / COUNT(1) AS avg_ret
FROM b;

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务