留存率公式:
留存率 = (第一天且第二天均登录的用户数)/(总的用户数)
第一步:获得总的用户数
select
count(distinct user_id)
from login第二步:构建新表,在原表的基础上以min(date)为基础构建第二天字段
select
user_id,
date_add(min(date), interval 1 day) next_day
from login
group by user_id第三步:从原表的user_id和date两个字段作为查询条件在第二步构建的新表中对user_id进行计数,即可获得第一天且第二天均登录的用户数
select
count(distinc user_id)
from login
where (user_id, date)
in (
select
user_id,
date_add(min(date), interval 1 day) next_day
from login
group by user_id
)最后,根据公式,获得留存率,即最终SQL
select
round(count(distinct user_id) / (
select
count(distinct user_id)
from login), 3) p
from login
where (user_id, date)
in (
select
user_id,
date_add(min(date), interval 1 day) next_date
from login
group by user_id
)


京公网安备 11010502036488号