思路:①完成订单的时间看finish_time,但未完成订单的null显示在其他列,可以选start_time来计数。 ②因此窗口函数用count(start_time)over(order by date(finish_time))来计算完成/未完成的订单数,框定时间窗口为 当前日期至前推6天之内,形成表tb1; ③再做一次子查询,计算题目要求的数据,并筛选日期范围在10.1-10.3之间。 select distinct dt, round(a/7,2) as finish_num_7d, round(b/7,2) as cancel_num_7d from( select date(finish_time) dt, count(start_time)over(order by date(finish_time) range interval 6 day preceding) a, count(if(start_time is null,1,null))over(order by date(finish_time) range interval 6 day preceding) b from tb_get_car_order) as tb1 where dt between '2021-10-01' and '2021-10-03' order by dt