# 解法1: 滑动窗口RANGE版
SELECT DISTINCT
dt,
ROUND(finish/7,2) finish_num_7d,
ROUND((total-finish)/7,2) cancel_num_7d
FROM(
SELECT
DATE(order_time) dt,
COUNT(start_time) OVER(ORDER BY DATE(order_time) RANGE BETWEEN INTERVAL 6 DAY PRECEDING AND CURRENT ROW) finish,
COUNT(*) OVER(ORDER BY DATE(order_time) RANGE BETWEEN INTERVAL 6 DAY PRECEDING AND CURRENT ROW) total
FROM
tb_get_car_order
)t
WHERE
dt BETWEEN '2021-10-01' AND '2021-10-03'
ORDER BY dt
# 解法2:表连接+分组统计
# SELECT
# dt,
# ROUND(COUNT(IF(DATEDIFF(dt,order_time) BETWEEN 0 AND 6,start_time,NULL))/7,2),
# ROUND((COUNT(IF(DATEDIFF(dt,order_time) BETWEEN 0 AND 6,1,NULL)) -
# COUNT(IF(DATEDIFF(dt,order_time) BETWEEN 0 AND 6,start_time,NULL)))/7,2)
# FROM
# tb_get_car_order
# JOIN(
# SELECT DISTINCT
# DATE(order_time) dt
# FROM
# tb_get_car_order
# WHERE
# DATE(order_time) BETWEEN '2021-10-01' AND '2021-10-03'
# )t
# GROUP BY
# dt
# ORDER BY
# dt