select date(v.visit_time) as date, CONCAT(round(count(distinct o.user_id)/count(distinct v.user_id) * 100, 1), '%') as cr from order_tb o right join visit_tb v on o.user_id = v.user_id AND DATE(v.visit_time) = DATE(o.order_time) group by date(v.visit_time) order by date(v.visit_time)
重点在于AND DATE(v.visit_time) = DATE(o.order_time) 要求日期对应相等
假设用户A在 2023-01-01
访问了商城,但在 2023-01-05
下单。
不加日期条件时:
- 关联条件仅依赖 user_id,会将 2023-01-05 的订单与 2023-01-01 的访问记录匹配。
- 统计时会错误地将此订单计入 2023-01-01 的转化率,而 2023-01-05 的订单可能因为没有当天的访问记录被遗漏。
后果:
- 2023-01-01 的转化率虚高(订单被错误归因)。
- 2023-01-05 的转化率可能被低估(订单可能未被统计到正确日期)。