select sum(if(datediff(date_next, `date`)=1, 1, 0))/count(*) from (select device_id, `date`, lead(`date`, 1, '9999-12-31') over (partition by device_id order by `date`) as date_next from (select distinct device_id, `date` from question_practice_detail) a) a1; 开窗函数秒了