思路: 1、选出每日新增用户,形成tb2; 2、选出每日活跃用户,形成tb3; 3、将tb3和tb2左连接,加入连接条件活跃日期=min(活跃日期),此时tb2仅留下新增用户的uid; 4、用count计算tb2和tb3的用户数,注意distinct去重。 with tb1 as( select uid, date(in_time) as active_day from tb_user_log union all select uid, date(out_time) as active_day from tb_user_log) select tb2.active_day dt, count(distinct tb2.uid) dau, round(count(distinct tb3.uid)/count(distinct tb2.uid),2) uv_new_ratio from( (select uid, active_day from tb1 group by uid, active_day) as tb2 left join (select uid, min(active_day) as min_active_day from tb1 group by uid) as tb3 on tb2.uid=tb3.uid and active_day=min_active_day) group by tb2.active_day order by dt