考虑到用户每天的重复浏览和下单行为对于用户转化率的计算而言均视为一个计量单位,因此创建两张临时表分别对访问表和下单表的用户id进行去重处理并统计个数,再分别作为分母和分子,使用主查询求出每日的用户转化率;

with visit_user as(
    select date(visit_time) as date,
           count(distinct user_id) as visit_count
    from visit_tb
    group by date(visit_time)
), order_user as(
    select date(order_time) as date,
           count(distinct user_id) as order_count
    from order_tb
    group by date(order_time)
)
select v.date, 
       concat(round(round(o.order_count/v.visit_count, 3)*100, 1), "%") as cr
from visit_user v left join order_user o
on v.date = o.date
order by v.date