#
# 按照period分组
with t as(
select o.order_id, event_time, end_time, start_time, finish_time,order_time,
case
when '07:00:00' <= time(event_time) and time(event_time) < '09:00:00' then '早高峰'
when '09:00:00' <= time(event_time) and time(event_time)< '17:00:00' then '工作时间'
when '17:00:00' <= time(event_time) and time(event_time)< '20:00:00' then '晚高峰'
else '休息时间'
end as period
from tb_get_car_record r
join tb_get_car_order o on r.order_id = o.order_id
where weekday(event_time) between 0 and 4 #周一到周五
)
select
period,
count(order_id) 'get_car_num',
round(avg(timestampdiff(second, event_time, end_time) / 60),1) 'avg_wait_time',
round(avg(timestampdiff(second, order_time, start_time) / 60),1) 'avg_dispatch_time'
from t
group by period
order by get_car_num asc;
先计算period,然后根据period进行分组计算即可,注意要求的是工作日的时间



京公网安备 11010502036488号