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

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

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

#需求:统计每个城市中评分最高的司机平均评分、日均接单量和日均行驶里程数
#输出:city、driver_id、avg_grade、avg_order_num、avg_mileage
#要求:只输出平均评分最高的司机的数据;avg_grade和avg_order_num保留一位小数,avg_mileage保留三位,按avg_order_num升序输出
#要用到的数据:city、driver_id、grade、order_time、mileage,表链接
#拆分问题:每个城市中平均评分最高的司机:开窗rank,排序平均分,取第一的值
#平均评分:avg(grade)
#日均接单量和里程数:都涉及到日均,先取得天数count(distinct date(order_time)),再以接单量和里程数除以天数
with t1 as(
  select city,driver_id,avg(grade) tt1,count(distinct date(order_time)) tt2,
  count(order_time) tt3,sum(mileage) tt4
  from tb_get_car_order join tb_get_car_record using(order_id)
  group by city,driver_id
)
select city,driver_id,avg_grade,avg_order_num,avg_mileage
#因为要对ck1进行筛选,但不输出ck1,所以再套一层select
from(
  select city,driver_id,round(tt1,1) avg_grade,
  round(tt3/tt2,1) avg_order_num,round(tt4/tt2,3) avg_mileage,
  rank()over(partition by city order by tt1 desc) ck1
  from t1
)t2
where ck1=1
order by avg_order_num

全部评论

相关推荐

A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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