/*
统计每个城市中评分最高的司机
平均评分  (总评分/总评分个数)
日均接单量(总单数/总天数)
日均行驶里程数(总里程数/总天数)
city	driver_id	avg_grade	avg_order_num	avg_mileage
注:有多个司机评分并列最高时,都输出。
平均评分和日均接单量保留1位小数,
日均行驶里程数保留3位小数,按日均接单数升序排序
*/
#1.先计算出每个城市所有司机的平均评分,日均接单量,日均行驶里程数,
#2.再筛选出平均评分最高的那一位司机的信息
select 
      city,
      driver_id,
      avg_grade,
      avg_order_num,
      avg_mileage
  from
      (select 
             city,
             driver_id,
             round(avg(grade),1) as avg_grade,
             round(count(order_id) / count(distinct date(order_time)),1) as avg_order_num,
             round(sum(mileage) / count(distinct date(order_time)),3) as avg_mileage,
             dense_rank() over(partition by city order by round(avg(grade),1) desc ) as dr
         from tb_get_car_order a join tb_get_car_record b using (order_id)
         group by city,driver_id
      )a
 where dr = 1
 order by avg_order_num