select period,
count(*) get_car_num,
round(avg(wait_time),1) avg_wait_time,
round(avg(dispatch_time),1) avg_dispatch_time
from (select case
when time(event_time) BETWEEN '07:00:00' and '08:59:59' then '早高峰'
when time(event_time) BETWEEN '09:00:00' and '16:59:59' then '工作时间'
when time(event_time) BETWEEN '17:00:00' and '19:59:59' then '晚高峰'
else '休息时间' end as period,
TIMESTAMPDIFF(second,event_time,order_time)/60 as wait_time,
TIMESTAMPDIFF(second,order_time,start_time)/60 as dispatch_time
from tb_get_car_order a
left join tb_get_car_record b
on a.order_id = b.order_id
where weekday(event_time) BETWEEN 0 and 4
) t
group by period
order by get_car_num;