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

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

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

1. 先找出有过取消订单记录的司机
    判断条件为:
WHERE finish_time IS NOT NULL
AND mileage IS NULL
AND fare IS NULL
2. 再做自连接
SELECT *
FROM tb_get_car_order t1, tb_get_car_order t2
WHERE t1.finish_time IS NOT NULL
AND t1.mileage IS NULL
AND t1.fare IS NULL
AND t2.driver_id = t1.driver_id
AND t2.grade IS NOT NULL
GROUP BY t2.driver_id
3. 最终SQL
SELECT
    IF(t2.driver_id IS NULL, "总体", t2.driver_id),
    ROUND(AVG(t2.grade), 1) AS avg_grade
FROM tb_get_car_order t1, tb_get_car_order t2
WHERE t1.finish_time IS NOT NULL
AND t1.mileage IS NULL
AND t1.fare IS NULL
AND t2.driver_id = t1.driver_id
AND t2.grade IS NOT NULL
GROUP BY t2.driver_id
WITH ROLLUP
WITH ROLLUP 是在当前聚合的基础上,再做一次相同的聚合操作。


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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