美文网首页
【今日刷题】SQL29 计算用户的平均次日留存率

【今日刷题】SQL29 计算用户的平均次日留存率

作者: 不懂球的2大业 | 来源:发表于2023-02-11 21:00 被阅读0次

    题目

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

    • 题目描述如图:


      题目描述

    分析

    • 根据题意,需要求出用户在某天刷题后第二天还会再刷题的概率。我们首先需要找出所有刷题记录以及第二天还会再刷题的记录,因此我们对question_practice_detail表格进行连接操作。代码如下:
    # 对表进行自连接操作,q1代表所有刷题记录。q2左连接匹配,找出第二天还会再刷题的记录
    select * from
        (select distinct device_id,date from question_practice_detail) as q1
    left join
        (select distinct device_id,date from question_practice_detail) as q2
    on
        q1.device_id = q2.device_id and q2.date = date_add(q1.date,interval 1 day)
    
    输出结果
    • 之后用第二天还会刷题记录的数目,除以所有刷题记录的数目,计算出平均次日留存率。代码如下:
    # 用count(q2.device_id) / count(q1.device_id) 替换上面代码的*
    select count(q2.device_id) / count(q1.device_id)  as avg_ret 
    from
        (select distinct device_id,date from question_practice_detail) as q1
    left join
        (select distinct device_id,date from question_practice_detail) as q2
    on
        q1.device_id = q2.device_id and q2.date = date_add(q1.date,interval 1 day)
    

    相关文章

      网友评论

          本文标题:【今日刷题】SQL29 计算用户的平均次日留存率

          本文链接:https://www.haomeiwen.com/subject/patrkdtx.html