- 筛选工作日,创建period特征,同时直接结合订单表与记录表,计算等待时间,调做时间
- 之后直接根据period进行分组统计即可
WITH t1 AS(
SELECT order_id
, TIMESTAMPDIFF(SECOND, event_time, order_time)/60 AS wait_time
, TIMESTAMPDIFF(SECOND, order_time, start_time)/60 AS dispatch_time
,CASE
WHEN HOUR(event_time) BETWEEN 7 AND 8 THEN '早高峰'
WHEN HOUR(event_time) BETWEEN 9 AND 16 THEN '工作时间'
WHEN HOUR(event_time) BETWEEN 17 AND 19 THEN '晚高峰'
ELSE '休息时间'
END AS period
FROM tb_get_car_order
JOIN tb_get_car_record USING(order_id)
WHERE DAYOFWEEK(event_time) BETWEEN 2 AND 6
)
SELECT period
, COUNT(order_id) AS get_car_num
, ROUND(AVG(wait_time), 1) AS avg_wait_time
, ROUND(AVG(dispatch_time), 1) AS avg_dispatch_time
FROM t1
GROUP BY period
ORDER BY get_car_num