题解 | #各城市最大同时等车人数#

各城市最大同时等车人数

https://www.nowcoder.com/practice/f301eccab83c42ab8dab80f28a1eef98

WITH t as(
SELECT event_time AS wait_time,	
1 AS flag,city
FROM tb_get_car_record AS gcr
JOIN tb_get_car_order AS gco
ON gcr.order_id = gco.order_id
UNION ALL
SELECT (CASE 
WHEN gcr.order_id IS NULL THEN end_time
WHEN start_time IS NULL THEN finish_time
ELSE start_time
END)AS wait_time,	
-1 AS flag,city
FROM tb_get_car_record AS gcr
JOIN tb_get_car_order AS gco
ON gcr.order_id = gco.order_id
),
t1 as(
SELECT city,
SUM(flag)OVER(PARTITION BY city,DATE(wait_time) ORDER BY wait_time ASC,flag DESC) AS wait_nv 
FROM t
WHERE YEAR(wait_time) = 2021 AND MONTH(wait_time) = 10
)


SELECT city,MAX(wait_nv) AS max_wait_uv 
FROM t1
GROUP BY city
ORDER BY max_wait_uv ASC,city ASC;

需要是UNION ALL,因为如果存在重复记录,比如有两个用户同时打车。

如果不采用UNION ALL,而是采用UNION,需要在with查询中加入uid字段,这样保证两条记录不一样,从而不会被删去。

全部评论

相关推荐

04-13 11:19
门头沟学院 HTML5
NullPointe...:27实习的都快结束了吧
点赞 评论 收藏
分享
老树开花:可以开始投了,不用等到觉得完全准备好。一边投一边根据面试反馈改简历是最高效的方式。简历上项目描述建议突出你解决的具体问题,比如编辑器的性能优化、大文档渲染怎么处理的,而不只是列技术栈。中厂前端实习现在竞争确实激烈,建议同时关注一些有AI业务的团队,前端加AI应用是很有差异化的组合。Vue全家桶基础扎实的话可以往SSR或者跨端方向延伸,这些是面试加分项。加油,时间还来得及。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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