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

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

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

select 
    city,driver_id,avg_grade,avg_order_num,avg_mileage
from(
    select 
      city, 
      driver_id,
      round(avg(grade),1) avg_grade,
      round(count(tb_get_car_order.driver_id)/count(distinct date(order_time)),1) avg_order_num,
      round(sum(mileage)/count(distinct date(order_time)),3) avg_mileage,
      rank()over(partition by city order by avg(grade)desc) rk
    from tb_get_car_order
    join tb_get_car_record
      on tb_get_car_order.order_id = tb_get_car_record.order_id
    group by driver_id, city
	 ) as avg_driver
where rk = 1
order by avg_order_num 

全部评论
这道题对于我这个新手小白真的搞了好久,首先,要理清最终要求的三个平均数是怎么得来的,一层一层拆分;其次,搞清窗口函数的基本书写格式:select-from(select-from-join-group)as sth,key!!!这里一定要起别名,不然就会报错;再次,rank()里的partition by一定不要忽略,我第一次写的时候就忽略了这一点,如果没有他所有地方的司机都会在一起排名,最终只会输出一个结果,所以这里一定要注意;最后是我的一个错误点来分享给大家,在计算天数的时候,最开始以为任何一个time都差不多,随便写一个就行,但是是不对的!order—time才是他的工作天数。就当是我错误的备忘录了,希望之后我来看这个题的时候,不要再错。
点赞 回复 分享
发布于 2025-11-14 17:15 安徽

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务