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 即可!