题解 | #各城市最大同时等车人数#
各城市最大同时等车人数
https://www.nowcoder.com/practice/f301eccab83c42ab8dab80f28a1eef98
select city, max(wait_uv) from( select # 汇总每一个时刻,等车人数的变化,注意要有ch desc,这样才能到达先记+1,再记-1的题目要求 city, sum(ch) over(partition by city order by wait_time, ch desc) wait_uv from( select #将等待开始与结束时间,与状态量的变化相对应 a.order_id, a.city, a.event_time wait_time, 1 ch from tb_get_car_record a join tb_get_car_order b on a.order_id = b.order_id where date_format(a.event_time, '%Y-%m') = '2021-10' union all select a.order_id, a.city, if(b.start_time is not null, b.start_time, b.finish_time) wait_time, # 注意乘客可能提前取消,这是不会有start time改用finish time from tb_get_car_record a join tb_get_car_order b on a.order_id = b.order_id where date_format(a.event_time, '%Y-%m') = '2021-10' ) t1 ) t2 group by city order by 2, 1