SELECT
  city,
  driver_id,
  avg_grade,
  avg_order_num,
  avg_mileage
FROM
  (
    SELECT
      city,
      driver_id,
      ROUND(avg_grade, 1) AS avg_grade,
      ROUND(order_num / order_date_cnt, 1) AS avg_order_num,
      ROUND(total_mileage / order_date_cnt, 3) AS avg_mileage,
      RANK() OVER(
        PARTITION BY city
        ORDER BY
          avg_grade DESC
      ) AS rank_grade
    FROM
      (
        SELECT
          city,
          driver_id,
          COUNT(DISTINCT DATE(order_time)) AS order_date_cnt,
          COUNT(order_id) AS order_num,
          AVG(grade) AS avg_grade,
          SUM(mileage) AS total_mileage
        FROM
          tb_get_car_record
          JOIN tb_get_car_order USING(order_id)
        GROUP BY
          city,
          driver_id
      ) driver_information
  ) rank_grade_t
WHERE
  rank_grade = 1
ORDER BY
  avg_mileage