with t as 
(	-- 2、将各城市司机根据当前城市排名dense_rank
    select city,driver_id,dense_rank()over(partition by city order by avg_grade desc) dr from 
    (
	  	-- 1、求出各城市司机的平均评分
        select city,driver_id,avg(grade) avg_grade
        from tb_get_car_record r join tb_get_car_order o on r.order_id=o.order_id
        group by city,driver_id
    ) t1
)
select city,driver_id,round(avg(grade),1) avg_grade,				-- 6、计算相关指标
round(count(1)/count(distinct date(order_time)),1) avg_order_num,
round(sum(mileage)/count(distinct date(order_time)),3) avg_mileage
from tb_get_car_record r join tb_get_car_order o on r.order_id=o.order_id -- 3、所有订单记录
-- 4、所有订单记录中满足不同城市中司机平均分排名第一的(city,driver_id)
where (city,driver_id) in (select city,driver_id from t where dr=1) 
group by city,driver_id -- 5、根据(city,driver_id)分组
order by avg_order_num		-- 7、排序

步骤结果:

1、求出各城市司机的平均评分

2、将各城市司机根据当前城市排名dense_rank

3-7