select dt, round(avg(if_re is not null), 2) uv_left_rate from ( # 然后将新用户登录记录表与tb_user_log按特定条件连接 select t2.uid, date(f_in) dt, min(in_time) if_re # 其中如果if_re不为空,则是次日留存了的新用户 from ( # 先查询2021年11月每天的新用户在第一天登录的记录 select * from ( select uid, min(in_time) f_in from tb_user_log group by uid ) t1 where date_format(f_in, '%Y%m') = '202111' ) t2 left join tb_user_log t on t2.uid = t.uid and (datediff(date(t.in_time), date(t2.f_in))=1 or datediff(date(t.out_time), date(f_in))=1) group by t2.uid, f_in ) t3 group by dt order by dt;