WITH t1 AS (
    SELECT
        order_id,
        driver_id,
        IFNULL(fare,0) AS fare
    FROM tb_get_car_order
    WHERE DATE(order_time) BETWEEN '2021-10-01'
    AND '2021-10-07'
),
t2 AS (
    SELECT
        order_id,
        city
    FROM tb_get_car_record
),
t3 AS (
    SELECT t1.*,
           t2.city
    FROM t1
    LEFT JOIN t2
    ON t1.order_id = t2.order_id
    HAVING t2.city = '北京'
),
t4 AS (
  SELECT driver_id,
         COUNT(driver_id) AS order_count,
         SUM(fare) AS fare_sum
    FROM t3
    GROUP BY driver_id
    HAVING order_count >= 3
),
t5 AS (
    SELECT '北京' AS city,
           ROUND(avg(order_count),3) AS avg_order_num,
           ROUND(avg(fare_sum),3) AS avg_income
    FROM t4
)
SELECT * FROM t5;

# 这道题关键在于不要过滤掉null值,将其转化为 0 即可!