思路: ①将表进行左连接,加入日期相差1天的筛选条件,此时左边表tb1保留全部刷题用户,右边表tb2保留第二天还来刷题的用户; ②去重选择左右两表的用户和日期,形成表tb3,基于tb3进行计算即可。 select count(b)/count(a) from( select distinct tb1.device_id a, tb1.date dt1, tb2.device_id b, tb2.date dt2 from question_practice_detail tb1 left join question_practice_detail tb2 on tb1.device_id=tb2.device_id and datediff(tb2.date, tb1.date)=1) as tb3