# 步骤一
# select
# city,
# driver_id,
# round(avg(grade),1) as avg_grade,
# round(count(co.driver_id) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 1) as avg_order_num,
# round(sum(mileage) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 3) as avg_mileage
# from tb_get_car_order as co
# left join tb_get_car_record as cr using(order_id)
# group by city, driver_id
# 步骤二
# select city,
# driver_id,
# avg_grade,
# max(avg_grade) over(partition by city order by avg_grade desc) as max_grade,
# avg_order_num,
# avg_mileage
# from (select
# city,
# driver_id,
# round(avg(grade),1) as avg_grade,
# round(count(co.driver_id) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 1) as avg_order_num,
# round(sum(mileage) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 3) as avg_mileage
# from tb_get_car_order as co
# left join tb_get_car_record as cr using(order_id)
# group by city, driver_id
# ) as t1
# 步骤三
select
city,
driver_id,
avg_grade,
avg_order_num,
avg_mileage
from (select city,
driver_id,
avg_grade,
max(avg_grade) over(partition by city order by avg_grade desc) as max_grade,
avg_order_num,
avg_mileage
from (select city, driver_id,
round(avg(grade),1) as avg_grade,
round(count(co.driver_id) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 1) as avg_order_num,
round(sum(mileage) / count(distinct DATE_FORMAT(order_time, '%Y-%m-%d')), 3) as avg_mileage
from tb_get_car_order as co
left join tb_get_car_record as cr using(order_id)
group by city, driver_id
) as t1
) as t2
where t2.avg_grade = max_grade
order by avg_order_num;