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

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

# 注意over窗口中排序的num desc
# 因为如果同一时刻有人停止等车,有人开始等车,等车人数记作先增加后减少。
with tmp as(
    select 
        city,
        rd.event_time et,
        (
            case when rd.order_id is null then end_time
                 else start_time
                 END
        ) st
    from tb_get_car_record rd
    left join tb_get_car_order od
    on rd.order_id = od.order_id
    where date_format(event_time,'%Y-%m') = '2021-10'
)
select 
    city,
    max(wait_num)
from
    (
    select 
        city,
        sum(num) over(partition by city order by dt,num desc) wait_num
    from
        (
            select
                city,
                et dt,
                1 num
            from 
                tmp
            union all
            select
                city,
                st dt,
                -1 num
            from 
                tmp
        )t1
    )t2
group by city
order by max(wait_num),city

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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