with t1 as(
    select distinct uid,date(in_time) dt,min(date(in_time))over(partition by uid) new_dt
    from tb_user_log
    union
    select distinct uid,date(out_time) dt,min(date(in_time))over(partition by uid) new_dt
    from tb_user_log
)
select dt,count(1) as dau,
round(sum(if(dt=new_dt,1,0))/count(1),2) as uv_new_ratio
from t1
group by dt
order by dt

当日的新用户就是当日时间等于该用户的最小登陆时间