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