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

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

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


1)请找到2021年10月有过取消订单记录的司机,
  • DATE_FORMATE(order_time,'%Y%m')='202110' -- 2021年10月份
  • WHERE finish_time IS NOT NULL AND start_time IS NULL --取消的订单
SELECT driver_id FROM tb_get_car_order
WHERE DATE_FORMAT(order_time,'%Y%m')='202110' -- 2021年10月份
AND finish_time IS NOT NULL AND start_time IS NULL -- 取消的订单
2)计算他们每人全部已完成的有评分订单的平均评分及总体平均评分,保留1位小数。
  • grade IS not NULL --有评分订单
  • AVG(grade) -- 平均评分
  • GROUP BY driver_id WITH ROLLUP --按照司机ID聚类,并求总体平均分评分
3)先按driver_id升序输出,再输出总体情况。
  • WITH ROLLUP会自动排序
  • IFNULL(driver_id,'总体') 空值命名为总体
SELECT IFNULL(driver_id,'总体') driver_id,ROUND(AVG(grade),1) avg_grade
FROM tb_get_car_order
WHERE grade IS NOT NULL 
AND driver_id IN(SELECT driver_id FROM tb_get_car_order
WHERE DATE_FORMAT(order_time,'%Y%m')='202110' -- 2021年10月份
AND finish_time IS NOT NULL AND start_time IS NULL -- 取消的订单
)
GROUP BY driver_id WITH ROLLUP;

SQL解题集 文章被收录于专栏

这是牛客SQL相关的解题集

全部评论
为什么是 AVG(grade) -- 平均评分 不是 avg(sum(grade))
点赞 回复 分享
发布于 2022-06-15 20:50

相关推荐

12-19 15:04
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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