此题共包含两张表:

表1:tb_get_car_record

表2:tb_get_car_order

要解决的问题:

问题:请找到2021年10月有过取消订单记录的司机,计算他们每人全部已完成的有评分订单的平均评分及总体平均评分,保留1位小数。先按driver_id升序输出,再输出总体情况。

解释: 2021年国庆有未完成订单的司机有202和203;202的所有订单评分有:5、4、4,平均分为4.3;203的所有订单评分有:5、5、4、5,平均评分为4.8;总体平均评分为(5+4+4+5+5+4+5)/7=4.6

解题思路:

  1. 统计2021年10月有取消订单记录的司机(时间为2021年10月,finish_time后面信息为null的)
  2. 找到2中的司机,全部已完成的评分和有评分订单的评分
  3. 按driver_id升序输出后,再输出整体情况
SELECT COALESCE(driver_id,'总体'), ROUND(sum(grade)/count(grade),1) avg_grade
from tb_get_car_order
where driver_id in (
		SELECT driver_id
		from tb_get_car_order
		where mileage is null and DATE_FORMAT(finish_time,'%Y%m') = '202110')
and grade is not null
group by driver_id with rollup