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

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

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

记录一个蠢办法

思路

  1. 先计算出每个城市每个司机的平均分数,日均接单数和日均里程数
  2. 计算出每个城市的最高的返
  3. 利用city=city和平均分数=城市最高平均分数两个条件来连接两表(此步骤可以去掉所有平均分不是第一名的司机)
  4. 再按照分数排序即可

完整代码

# 先两表连接
with tb_1 as (
    select city,
           driver_id,
           order_time,
           mileage,
           grade
    from tb_get_car_order
    join tb_get_car_record using(order_id)
),
# 每个城市中每个司机的平均评分,日均接单数,日均里程数
tb_2 as (
select city,
       driver_id,
       round(avg(grade),1) avg_grade,
       round(count(order_time)/count(DISTINCT date(order_time)),1) avg_order_num,
       round(sum(mileage)/count(DISTINCT date(order_time)),3) avg_mileage
from tb_1
group by city,driver_id
),
# 每个城市的最高平均评分
tb_3 as (select city,
       max(avg_grade) max_avg_grade
from tb_2
group by city
)

# 利用两表连接来排除不符合条件的司机,然后排序
select tb_2.*
from tb_2
join tb_3
on tb_2.city=tb_3.city
and tb_2.avg_grade = tb_3.max_avg_grade
order by tb_2.avg_order_num;
全部评论

相关推荐

MGlory:我当初有一个老师告诉我简历要写的简单,最好只一面,项目可以写核心的,进面了自然会问你的
点赞 评论 收藏
分享
04-05 21:13
邯郸学院 Java
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务