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

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

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

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务