with t as
( -- 2、将各城市司机根据当前城市排名dense_rank
select city,driver_id,dense_rank()over(partition by city order by avg_grade desc) dr from
(
-- 1、求出各城市司机的平均评分
select city,driver_id,avg(grade) avg_grade
from tb_get_car_record r join tb_get_car_order o on r.order_id=o.order_id
group by city,driver_id
) t1
)
select city,driver_id,round(avg(grade),1) avg_grade, -- 6、计算相关指标
round(count(1)/count(distinct date(order_time)),1) avg_order_num,
round(sum(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 -- 3、所有订单记录
-- 4、所有订单记录中满足不同城市中司机平均分排名第一的(city,driver_id)
where (city,driver_id) in (select city,driver_id from t where dr=1)
group by city,driver_id -- 5、根据(city,driver_id)分组
order by avg_order_num -- 7、排序
步骤结果:
1、求出各城市司机的平均评分
2、将各城市司机根据当前城市排名dense_rank
3-7



京公网安备 11010502036488号