最简单易懂的代码
各城市最大同时等车人数
https://www.nowcoder.com/practice/f301eccab83c42ab8dab80f28a1eef98
最难的就两部分
1、结束等待的时间判定。有上车就是start_time结束等待;没上车,司机接单后取消finish_time;没有司机接单,取消打车end_time
ifnull(start_time,ifnull(finish_time,end_time)
2、单日同时等车人数,先记增加后减少:
sum(cnt)over(partition by city,dt order by tm,cnt desc)
select
city,max(wait_uv) as max_wait_uv
from (
select
distinct city,dt,tm,
sum(cnt)over(partition by city,dt order by tm,cnt desc) as wait_uv #单日同时等车人数,先记增加后减少
from (
select city,date(event_time) as dt,event_time as tm,1 as cnt #开始打车记为1
from tb_get_car_record
union all
select city,date(event_time) as dt,ifnull(start_time,ifnull(finish_time,end_time)) as tm,-1 as cnt #结束等待记为-1。有上车就是start_time结束等待;没上车,司机接单后取消finish_time;没司机接单,取消打车end_time
from tb_get_car_record left join tb_get_car_order using(order_id)
) as t
where dt like '2021-10%' #2021年10月
) as t1
group by city
order by max_wait_uv,city



