WITH daily_activity AS (  -- 定义一个名为 daily_activity 的公共表表达式,用于获取不同设备和日期的记录
    SELECT DISTINCT device_id, date
    FROM question_practice_detail
),

activity_with_lead AS (  -- 再定义一个名为 activity_with_lead 的公共表表达式
    SELECT 
        device_id,  -- 选择设备 ID
        date,  -- 选择日期
        LEAD(date) OVER (PARTITION BY device_id ORDER BY date) AS next_date  -- 通过窗口函数获取每个设备按日期排序的下一个日期
    FROM 
        daily_activity
)

SELECT 
    ROUND(AVG(CASE  -- 计算平均值并四舍五入到 4 位小数
        WHEN DATEDIFF(next_date, date) = 1 THEN 1.0  -- 如果下一个日期与当前日期相差 1 天,值为 1
        ELSE 0  -- 否则为 0
    END), 4) AS avg_ret  -- 将结果命名为 avg_ret
FROM 
    activity_with_lead;