1)请找到2021年10月有过取消订单记录的司机,
  • DATE_FORMATE(order_time,'%Y%m')='202110' -- 2021年10月份
  • WHERE finish_time IS NOT NULL AND start_time IS NULL --取消的订单
SELECT driver_id FROM tb_get_car_order
WHERE DATE_FORMAT(order_time,'%Y%m')='202110' -- 2021年10月份
AND finish_time IS NOT NULL AND start_time IS NULL -- 取消的订单
2)计算他们每人全部已完成的有评分订单的平均评分及总体平均评分,保留1位小数。
  • grade IS not NULL --有评分订单
  • AVG(grade) -- 平均评分
  • GROUP BY driver_id WITH ROLLUP --按照司机ID聚类,并求总体平均分评分
3)先按driver_id升序输出,再输出总体情况。
  • WITH ROLLUP会自动排序
  • IFNULL(driver_id,'总体') 空值命名为总体
SELECT IFNULL(driver_id,'总体') driver_id,ROUND(AVG(grade),1) avg_grade
FROM tb_get_car_order
WHERE grade IS NOT NULL 
AND driver_id IN(SELECT driver_id FROM tb_get_car_order
WHERE DATE_FORMAT(order_time,'%Y%m')='202110' -- 2021年10月份
AND finish_time IS NOT NULL AND start_time IS NULL -- 取消的订单
)
GROUP BY driver_id WITH ROLLUP;