WITH filtered_orders AS (
    SELECT DISTINCT user_id  
    FROM order_tb 
    WHERE order_time >= '2022-09-02' 
      AND order_time < '2022-09-03'
),
filtered_visits AS (
    SELECT user_id, COUNT(*) AS visit_nums
    FROM visit_tb 
    WHERE visit_time >= '2022-09-02' 
      AND visit_time < '2022-09-03'
    GROUP BY user_id
)
SELECT fv.user_id, fv.visit_nums
FROM filtered_visits fv
JOIN filtered_orders fo ON fv.user_id = fo.user_id
order by visit_nums desc

先过滤再join,用两个cte,一个代表过滤order,一个代表过滤访问,之后再join。注意笛卡尔积。