WITH t1 AS (
SELECT
DATE (order_time) AS dt,
start_time
FROM tb_get_car_order
HAVING dt BETWEEN '2021-09-25' AND '2021-10-03'
),
t2 AS (
SELECT
dt,
SUM(IF(start_time IS NULL,0,1)) AS yes_num,
SUM(IF(start_time IS NULL,1,0)) AS no_num
FROM t1
GROUP BY dt
ORDER BY dt
),
t3 AS (
SELECT max(dt) AS dt,
ROUND(sum(yes_num) / 7,2) AS finish_num_7d,
ROUND(sum(no_num) / 7,2) AS cancel_num_7d
FROM t2
WHERE dt BETWEEN '2021-09-25' AND '2021-10-01'
UNION ALL
SELECT max(dt) AS dt,
ROUND(sum(yes_num) / 7,2) AS finish_num_7d,
ROUND(sum(no_num) / 7,2) AS cancel_num_7d
FROM t2
WHERE dt BETWEEN '2021-09-26' AND '2021-10-02'
UNION ALL
SELECT max(dt) AS dt,
ROUND(sum(yes_num) / 7,2) AS finish_num_7d,
ROUND(sum(no_num) / 7,2) AS cancel_num_7d
FROM t2
WHERE dt BETWEEN '2021-09-27' AND '2021-10-03'
)SELECT * FROM t3;
# 这道题的关键在于结果记得除以 7 day!