题解 | #计算用户的平均次日留存率#
with a1 as (
select distinct device_id,date
from question_practice_detail
),
a as(
select device_id,date,count(*) over(partition by device_id order by date range between current row and interval 1 day following) as ct
from a1
),
a2 as (
select count(*) as ct1
from a
where a.ct = 2
),
a3 as (
select count(*) as ct2
from a1
)
select ct1/ct2 as avg_ret
from a2,a3
窗口函数秒
