题解 | #每个城市中评分最高的司机信息#

每个城市中评分最高的司机信息

http://www.nowcoder.com/practice/dcc4adafd0fe41b5b2fc03ad6a4ac686

# 先分组聚合求出所有指标,再通过窗口函数rank() 筛选评分最高的记录
select
    t1.city,
    t1.driver_id,
    t1.avg_grade,
    t1.avg_order_num,
    t1.avg_mileage
from 
       ( select
            *,  # 2.取出每个城市最高的司机平均评分、日均接单量和日均行驶里程数。
            rank() over(partition by t.city order by t.avg_grade desc) as num
        from
            (   # 1.先算出每个城市每个司机的平均评分、日均接单量和日均行驶里程数。
                select
                    r.city,
                    o.driver_id,
                    round(avg(o.grade), 1) avg_grade,
                    round(count(o.order_time) / count(distinct date(order_time)) , 1) avg_order_num,
                    round(sum(o.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  
                group by
                    r.city, o.driver_id
            )t
        )t1
where
    t1.num = 1
order by
    t1.avg_order_num asc


全部评论

相关推荐

网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务