with per_day as ( select date(order_time) order_time, count(fare) finish, sum(case when start_time is null then 1 end) cancel from tb_get_car_order group by date(order_time) ) ,7ds as ( select order_time ,round(sum(finish)over(order by order_time rows between 6 preceding and current row)/7,2) as finish_num_7d ,round(sum(cancel)over(order by order_time rows between 6 preceding and current row)/7,2) as cancel_num_7d from per_day ) select * from 7ds where order_time between '2021-10-01' and '2021-10-03' order by order_time