SQL计算次日留存率

实际业务中(特别是电商业务分析),需要计算今天用户登录,第二天还会登录的用户所占的比率,也就是次日留存率的概念。
计算思路就是将表进行自连接(条件是左表日期+1=右表日期),满足条件的记录数就是次日登录的用户总数,再除以左表记录总数(用户数)就是次日留存率。

select count(date2) / count(date1) as avg_ret
from (
    select
        distinct a.uid,
        a.date as date1,
        b.date as date2
    from tableName a
    left join(
        select distinct uid, date
        from tableName
    )b
    on a.uid=b.uid
    and date_add(a.date, interval 1 day)=b.date
)t

你可能感兴趣的:(work_efficiency,sql,数据库)