with reg as ( select uid ,date(min(in_time)) first_time from tb_user_log group by uid ), user_log as ( select uid ,date(in_time) dt from tb_user_log union all select uid ,date(out_time) dt from tb_user_log ) select dt ,count(distinct log.uid) dau ,round(count(distinct reg.uid) / count(distinct log.uid), 2) uv_new_ratio from user_log log left join reg on log.uid = reg.uid and log.dt = reg.first_time group by dt order by dt