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

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

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

解体思路

  1. 先group by city,driver_id求出一个新表格t1,即相同城市相同司机的平均评分,平均接***均里程.
  2. 在t1表格基础上,打印出所有的行,并且新添一列进行从大到小排序,又生成新的表格t2,利用窗口函数rank()对平均评分从大到小排序,相同分数是同样的排名,即第一有很多也可以同时输出
  3. 在t2基础上,打印出除排序列以外的所有列就好啦
select	
	city,
    driver_id,
    avg_grade,
    avg_order_num,
    avg_mileage
from
(select 
	*,
    rank() over (partition by city order by avg_grade desc) as paixu
from
(select 
	city,
    driver_id,
    round(sum(grade)/sum(if(grade>0,1,0)),1) as avg_grade,
    round(count(order_time)/count(distinct date(order_time)),1) as avg_order_num,
    round(sum(mileage)/count(distinct date(order_time)),3) as avg_mileage
from tb_get_car_order tgco
join tb_get_car_record tfcr
on tgco.order_id=tfcr.order_id and tgco.uid=tfcr.uid
group by city,driver_id
order by avg_grade desc) t1)t2
where paixu=1
order by avg_order_num
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务