好题分享、心路历程(力扣601)——连续登录

【题目介绍】

该题为力扣601,名为体育馆的人流量。

【题型分类】

属于连续专题。

官网标为困难题。

【思路分享】

这里的连续类似时间连续,采用 row_number() 技巧解题。

关键点:

1. 连续序列:已有连续序列,以 id 标号。

2. 不连续序列:需构造不连续序列,过滤后以 row_number() 排序标号,记为 rnk。

3. 连续序列与不连续序列差值:需构造序列差值,做差可用 abs() 规避负数报错;差值相同的为连续状态,以便后续分组(注意这里非聚合);记为 grp。

复制代码
select id,visit_date,people
from
    (select *,count(*) over(partition by grp) as cnt
    from 
        (select *,
            abs(id-rnk) as grp
        from
            (select *,
                row_number() over(order by visit_date) as rnk
            from Stadium
            where people >= 100) as tmp1) as tmp2) as tmp3
where cnt >= 3
order by visit_date
复制代码

-END

posted @   找回那所有、  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
这里到底了哦~(●'◡'●)
点击右上角即可分享
微信分享提示