题解 | #有取消订单记录的司机平均评分#

有取消订单记录的司机平均评分

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

# 这道题学到的是排序问题,with rollup在表末尾追加,因此“先按driver_id升序输出,再输出总体情况”,可考虑在上一步中就按照driver_id排好序,最后一步在计算并添加with rollup。

# 问题:请找到2021年10月有过取消订单记录的司机,

with dr_id as (

select driver_id

from tb_get_car_order

where date_format(order_time,'%Y-%m')='2021-10'

and start_time is null )

# 这些司机订单情况,按driver_id升序输出,

,or_in as (

select driver_id,order_time,grade

from  dr_id

join tb_get_car_order using(driver_id)

where grade is not null

and date_format(order_time,'%Y-%m')='2021-10'

order by driver_id )

# 计算他们每人全部已完成的有评分订单的平均评分及总体平均评分,保留1位小数。

#这一步可以与上一步放到一起,但这样写更清晰明了

select ifnull(driver_id,"总体") as driver_id

    ,round(sum(grade)/count(order_time),1) as avg_grade

from or_in

group by driver_id

with rollup

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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