题解 | #有取消订单记录的司机平均评分#
有取消订单记录的司机平均评分
https://www.nowcoder.com/practice/f022c9ec81044d4bb7e0711ab794531a
1. 先找出有过取消订单记录的司机
判断条件为:
WHERE finish_time IS NOT NULL AND mileage IS NULL AND fare IS NULL2. 再做自连接
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_id3. 最终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 ROLLUPWITH ROLLUP 是在当前聚合的基础上,再做一次相同的聚合操作。



查看1道真题和解析