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

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

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

select
    avg(if (datediff (date2, date1) = 1, 1, 0)) as avg_rate
from
    (
        select distinct
            device_id,
            date as date1,
            lead (date) over (
                partition by
                    device_id
                order by
                    date
            ) as date2
        from
            (
                select distinct
                    device_id,
                    date
                from
                    question_practice_detail
            ) as qpd_device_date
    ) as id_last_next_date

lead (date) over (partition by device_id order by date )

  • lead找到某列的下一次的动作然后将日期进行拼接
  • lead(date)表示对date进行寻找,寻找partition by device_id的下一次时间
  • partition by device_id表示按照此列进行分组
  • order by date按照此列进行排序
select
    count(distinct q2.device_id, q2.date) / count(distinct q1.device_id, q1.date)
from
    question_practice_detail as q1
    left outer join question_practice_detail as q2 on q1.device_id = q2.device_id
    and datediff (q1.date, q2.date) = 1

提取表格中的device_id,date作为临时表格,左侧添加device_id和date2,添加的条件为device_id相等和datediff (q1.date, q2.date) = 1

datediff (q1.date, q2.date) = 1的意思是两个date相差1

select count(uniq_id_date_date)/count(qpd_date) as avg_rate
from(
select distinct
    qpd.device_id,
    qpd.date as qpd_date,
    uniq_id_date.date as uniq_id_date_date
from
    question_practice_detail as qpd
    left join (
        select distinct
            device_id,
            date
        from
            question_practice_detail
    ) as uniq_id_date on uniq_id_date.device_id = qpd.device_id and date_add(qpd.date,interval 1 day)=uniq_id_date.date
) as id_last_next_date

首先提取表中的device_id和date 并在原表左拼接,使device_id和date_add(qpd.date,interval 1 day)=uniq_id_date.date相等,符合这两个条件的即为连续两天都去参加的人

date_add(qpd.date,interval 1 day)=uniq_id_date.date表示对date列每个元素加一天,,interval 1 day可以变为月份,年等单位。

全部评论

相关推荐

SadnessAlex:跟三十五岁原则一样,人太多给这些***惯坏了
点赞 评论 收藏
分享
路过的咸蛋超人也想拿offer:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务