# 目标输出city,driver_id,avg_grade,avg_order_num,avg_mileage
with t as(
select  
    r.city,o.driver_id,
    round(avg(o.grade),1) as avg_grade,
    round(count(o.order_id)/count(distinct date(o.order_time)),1) as avg_order_num,
    round(sum(o.mileage)/count(distinct date(o.order_time)),3) as avg_mileage,
    rank()over(partition by r.city order by round(avg(o.grade),1) desc) as rk
from 
    tb_get_car_order as o left join tb_get_car_record as r on o.order_id=r.order_id
group by r.city,o.driver_id)
select t.city,t.driver_id,t.avg_grade,t.avg_order_num,t.avg_mileage from t where rk=1
order by t.avg_order_num

开始把时间理解成了timestampdiff(day,min(o.order_time),max(o.ordr_time))。。。