题解 | #2021年国庆在北京接单3次及以上的、

2021年国庆在北京接单3次及以上的司机统计信息

https://www.nowcoder.com/practice/992783fd80f746d49e790d33ee537c19

# 日期:2021.10.1-7;城市:北京;接单次数:>=3;
# 求平均接单数和兼职收入

# 联结两个表,筛选出符合条件的记录,接单数应该是成功跑完单的
# 以司机id为依据分组求记录数,继续筛选出符合要求的司机id
# 最后对接单数和收入求平均

# 临时表0  查询城市、司机id、收入、每个司机的跑单数(题意应该是有记录就算跑单,而不是必须完成接单,也就是fare字段有值才算)
WITH temp_0 AS(
    SELECT city, driver_id, fare, COUNT(*) OVER(PARTITION BY driver_id) order_num
    FROM tb_get_car_record a
    JOIN tb_get_car_order b USING(order_id)
	# 加限制条件,本来还加了fare不能为空,但是这样会影响计算跑单量,可见只要在打车订单表里有就算跑了,不管跑没跑完
    WHERE DATE(finish_time) BETWEEN '2021-10-01' AND '2021-10-07' AND city = '北京'
    )

# 主查询 选择城市,跑单量均值、收入均值
SELECT city, ROUND(AVG(order_num), 3), ROUND(AVG(order_fare), 3)
FROM(
	# 子查询对司机分组,查每个司机的跑单总量,收入总额
    SELECT MAX(city) city, MAX(order_num) order_num, SUM(fare) order_fare
    FROM temp_0
    GROUP BY driver_id
    ) a
# 筛选跑单量大于等于3的
WHERE order_num >= 3
GROUP BY city

简单题也不简单。在fare字段为空的筛选条件的坑待了半天。

全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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