思路:先算出每个城市各个司机的参数,最后选出排名第1的即可。
①两表连接,计算各个指标;
②用窗口函数rank排序;
③用子查询选出排名第一的数据。

with tb1 as(
    select city, driver_id, order_time, mileage, grade
    from tb_get_car_order tb2 left join tb_get_car_record tb1 using(order_id)
)

select city, driver_id, avg_grade, avg_order_num, avg_mileage
from(
select *, rank()over(partition by city order by avg_grade desc) as r
from(
select city, driver_id, 
round(avg(grade),1) avg_grade,
round(count(order_time)/count(distinct date(order_time)),1) avg_order_num,
round(sum(mileage)/count(distinct date(order_time)),3) avg_mileage
from tb1
group by city, driver_id) as tb2
) as tb3
where r=1
order by avg_order_num