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

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

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

select count(q1.device_id)/count(q2.device_id)
from 
      (select distinct device_id,date from question_practice_detail)as q2
      left join 
      (select distinct device_id,date from question_practice_detail)as q1
      on q1.device_id = q2.device_id and q1.date = DATE_ADD(q2.date,interval 1 day)

这个题目太难了,首先就是没有办法计算第二天仍然来答题的人数,第二个再看完答案后,写代码的时候,如果在from后面的两个集合q2和q1顺序也不能倒置了,否则计算就无法识别。默认leftjoin前面的集合为分母,后面的集合为分子。通过相同的ID来确认1集合里面的date比集合2里的天数大1,(+1)。这个思路很巧妙,要牢记,很多网站统计用户留存率应该经常用到的计算方法!!!

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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