select a.dt, round(count(distinct b.uid)/count(distinct a.uid),2) from (select uid, min(date_format(in_time,'%Y-%m-%d')) dt from tb_user_log group by uid) a left join (select uid, date_format(out_time,'%Y-%m-%d') dt from tb_user_log where date_format(out_time,'%Y-%m')='2021-11') b on a.dt=date_sub(b.dt,interval 1 day) and a.uid=b.uid where datediff(a.dt,'2021-11-01')>=0 group by a.dt # select datediff('2021-11-02','2021-11-01')
- 找到第一次登录的日期
- 找到登录的其他日期
- 连接两个表
- 然后继续聚合计算
- 注意要以第一个表作为连接标准
- 计数时要注意去重