SELECT visit_date AS date,
concat(round(avg(CASE WHEN order_date IS NOT NULL THEN 1 ELSE 0 END)*100,1),'%') AS cr
FROM(
    SELECT DISTINCT date(a.visit_time) AS visit_date,a.user_id,date(b.order_time) AS order_date
    FROM visit_tb as a
    LEFT JOIN  order_tb AS b
    ON a.user_id = b.user_id AND date(a.visit_time) = date(b.order_time)
    ORDER BY visit_date ASC,user_id ASC
) AS c
GROUP BY visit_date 
ORDER BY visit_date ASC

本人MySQL小白,写了个两层SELECT的解法,就是将visit表和order表进行连接去重从而统计出每个用户每天的访问情况和购买情况,由于使用的是LEFT JOIN 所以即使访问了没购买也会统计出来且order_date是NULL,这样第二层只用计算order_date为NULL的占比就可以了