with user_reac
as(

STEP2:在此基础上,再统计出每位用户的初次登录日期(是否为“新用户”的情况判断依据:利用“min窗口函数”求出所有用户“活跃日期”的min日期)
    select t1.uid,t1.dt,min(t1.dt) over(partition by t1.uid) as first_time
    from
    (

STEP1:先统计出每位用户的所有活跃天数(union:排除1位用户在1天内既登入又登出的情况,满足1位用户跨天登录&等处的情况)
    select uid,
    date(in_time) as dt
    from tb_user_log

    union 

    select uid,
    date(out_time) as dt
    from tb_user_log
) as t1)

STEP3:建好基础表后,按照所有用户的活跃日期(dt字段)作为统计依据,计算不同活跃日期中的活跃人数(uid————已经去重),当日新用户(当用户的初次登陆日期<first_time字段>=活跃日期👉当日活跃用户)占当日活跃人数的比例
select dt,
count(distinct uid) as dau,
round(sum(case when first_time = dt then 1 else 0 end) / count(distinct uid),2) as uv_new_ratio
from user_reac
group by 1
order by 1