题解 | #每个城市中评分最高的司机信息#
每个城市中评分最高的司机信息
https://www.nowcoder.com/practice/dcc4adafd0fe41b5b2fc03ad6a4ac686
-- 思路:
- -- 1.先按城市,司机分组统计每个司机的avg_grade,avg_order_num,avg_mileage
- -- 2.然后使用dense_rank函数按照城市分组,按平均评分降序排序
- -- 3.取排序第一的记录,按照日均接单数升序
-- 思路: -- 1.先按城市,司机分组统计每个司机的avg_grade,avg_order_num,avg_mileage -- 2.然后使用dense_rank函数按照城市分组,按平均评分降序排序 -- 3.取排序第一的记录,按照日均接单数升序 with t1 as ( select r.city, o.driver_id, round(avg(grade), 1) as avg_grade, round( count(o.order_id) / count(distinct date_format (o.order_time, '%Y-%m-%d')), 1 ) as avg_order_num, round( sum(mileage) / count(distinct date_format (o.order_time, '%Y-%m-%d')), 3 ) as avg_mileage from tb_get_car_order o join tb_get_car_record r on o.order_id = r.order_id group by r.city, o.driver_id ), t2 as ( select city, driver_id, avg_grade, avg_order_num, avg_mileage, dense_rank() over ( partition by city order by avg_grade desc ) as rk from t1 ) select city, driver_id, avg_grade, avg_order_num, avg_mileage from t2 where rk = 1 order by avg_order_num
SQL大厂面试题 文章被收录于专栏
牛客网sql大厂面试题题解~