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

各城市最大同时等车人数

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 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务