题解 | #工作日各时段叫车量、等待接单时间和调度时间#

工作日各时段叫车量、等待接单时间和调度时间

https://www.nowcoder.com/practice/34f88f6d6dc549f6bc732eb2128aa338

#新知识点: 获取日期的星期几函数: dayofweek(date) 从周日开始[1,7],weekday从周一开始[0,6]

# 问题:统计周一到周五各时段的叫车量、平均等待接单时间和平均调度时间。 全部以event_time-开始打车时间为时段划分依据。

# 对tb_get_car_record 的event_time进行划分:星期几、不同时段

WITH time_table  as (

SELECT order_id

    ,dayofweek(event_time)-1 as weekday     #dayofweek从周日开始,不习惯,-1变成从周一开始

    ,CASE

    WHEN hour(event_time) in (7,8) THEN '早高峰'

    WHEN hour(event_time) BETWEEN 9 AND 16 THEN '工作时间'

    WHEN hour(event_time) BETWEEN 17 AND 19 THEN '晚高峰'

    ELSE '休息时间'

    END as period

    ,timestampdiff(second,event_time,end_time) wait_time

FROM tb_get_car_record  )

# 平均等待接单时间和平均调度时间均保留1位小数,平均调度时间仅计算完成了的订单,结果按叫车量升序排序。

# 从开始打车到司机接单为等待接单时间,从司机接单到上车为调度时间。

SELECT period

    ,COUNT(order_id) get_car_num

    ,round((sum(wait_time)/count(distinct date(order_time)))/60 ,1) avg_wait_time

    ,round( (sum(timestampdiff(second,order_time,start_time)) /count(distinct date(order_time)) )/60,1) avg_dispatch_time

FROM time_table

JOIN tb_get_car_order USING(order_id)

WHERE weekday BETWEEN 1 AND 5

GROUP BY period

order by get_car_num,avg_wait_time

全部评论

相关推荐

点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
代码不跑我跑_bug...:北大杀完9✌杀,9✌杀完鼠鼠杀
你最希望上岸的公司是?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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