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

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

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

开始搞不懂什么是用户的平均次日留存率,看了很多评论都不是很明白,后面终于搞懂了,这里记录一下这个概念:
        这里的用户平均次日留存率指的是计算出用户连续登录两天的次数来除以所有用户登录的总次数(注意,这里同一个用户同一天登录两次只算做一次)
例如:

从上图来看,device_id为1的有一次两天连续登录,3有一次连续两天登录,那么两天连续登录的用户的次数就有2次,然后用户登录的总次数为6次,因为device_id为1的9月23是重复登录的,因此要去掉这一次,然后用2/6就是要算的平均次日留存率
sql代码:
select sum(cn)/(
    select
     sum(co)
    from
      (select count(distinct device_id) as co
      from question_practice_detail
      group by date
       ) as t
  )
  from (
select
  count(distinct q1.device_id) as cn
from
  question_practice_detail q1,
  question_practice_detail q2
where
  q1.device_id = q2.device_id
  and date_add(q1.date,interval 1 day)=q2.date
group by q1.date) as m
这里比较重要的一点是用了笛卡尔积来对连续两天登录的用户进行了筛选,可以在自己的mysql上跑出来看看表的结构,会更能理解

全部评论

相关推荐

01-14 16:23
广州商学院 Java
双非后端失败第N人:如果准备好了可以直接投字节,字节是最不看学历的,只要想面,大概率都能给你约面。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务