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

目录

1.题目:

2.思路

3.代码

4.运行结果


1.题目:

现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。

2.思路

        0.  根据牛客的题解画图更好理解,左侧代码是借鉴的题解

        1.  根据deviced_id对客户去重,,再查到相应的date2,得到表bbb,

        2.  把表bbb和原表左关联,原表(aaa) left join 右表(bbb)

        3.  关联条件有两个:

                第一个条件是 aaa表的deviced_id = bbb表的deviced_id

                第二个条件是:根据 aaa表 的date1算出下一天的日期(second_date),让second_date =  表bbb 的date2,目的是查询到客户第二天也活跃

                注意:表aaa的date是date1 , 表bbb的date是date2

        4.对关联后的表处理,其中date2是第二天也活跃的用户,date1是第一天活跃的用户

        5.平均概率 avg_ret = count(date2) / count(date1)

3.代码

with
    bbb as (
    select
        DISTINCT device_id,
        date
#         date_add(date,INTERVAL 1 day) as second_day
    from niuke.question_practice_detail
),
t1 as (
    SELECT DISTINCT
        aaa.device_id,
        aaa.date AS date1,
        bbb.date AS date2
    FROM
        niuke.question_practice_detail AS aaa
            LEFT JOIN bbb
                      ON (aaa.device_id = bbb.device_id) AND (date_add(aaa.date, INTERVAL 1 DAY) = bbb.date)
)
select count(date2)/count(date1) as avg_ret from t1;

4.运行结果

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值