1. 合并in_ime 和 out_time 获得用户日志UION 将用户的 in_time 和 out_time 转为日期格式,去重后得到每日活跃用户。

2.将用户日志与用户注册时间(min(in_time))进行合并,并通过if关键字判断当日活跃日期是否为注册日期

3计算DAU和新用户占比:根据日期进行分组,统计每日活跃用户数(DAU)和新用户比例(uv_new_ratio)

select  
    activate_date as dt,
    count(distinct uid) as dau,
    round(sum(if_register) / count(distinct uid),2) uv_new_ratio

from (
    select a.uid, activate_date , reg_date, if(reg_date = activate_date, 1, 0) if_register
    from (
    select uid, date(in_time) activate_date from tb_user_log
    union
    select uid, date(out_time) activate_date from tb_user_log
    ) a

    left join (select uid, min(date(in_time)) as reg_date  from tb_user_log group by uid) b
    on a.uid = b.uid

)c

group by activate_date
order by dt asc;