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