select
sum(case when datediff(t1.m,t1.date) =1 then 1 else 0 end)
/count( device_id)
from(
select
t.device_id,
t.date,
lead(t.date,1)over(partition by t.device_id order by t.date) as m
from(
select
distinct device_id,
date
from question_practice_detail
) as t 
) as t1
难点1 数据有重复的先要去重在提取数据
难点2 不能用留存率方式来做,因为,连续登录也算次数