您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页sql练习:计算用户的平均次日留存率

sql练习:计算用户的平均次日留存率

来源:叨叨游戏网

记录一下今天遇见的一道sql题

要求结果:

首先得知道平均次日留存率的计算公式

p=(这段时间内所有用户连续两天登录的次数)/(这段时间内所有用户登录的总次数)

求这段时间内所有用户登录的日期为表a

select distinct device_id,date from question_practice_detail

将用户登录过的日期全部减一天得到表b

select distinct device_id,date_sub(date,interval 1 day) as date

    from question_practice_detail

a表和b表进行左外连接,求某个用户前一天是否登录

select * from 
(select distinct device_id,date from question_practice_detail ) a
left join 
(
    select distinct device_id,date_sub(date,interval 1 day) as date
    from question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date

求用户连续两天都登录的次数 

select a.device_id , if(b.device_id is not null,1,0) temp
from
(select distinct device_id,date from question_practice_detail ) a
left join 
(
    select distinct device_id,date_sub(date,interval 1 day) as date
    from question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date

求平均次日留存率

select avg (if(b.device_id is not null,1,0)) as avg_ret
from
(select distinct device_id,date from question_practice_detail ) a
left join 
(
    select distinct device_id,date_sub(date,interval 1 day) as date
    from question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务