边儿上的小人您要嫌碍事儿,可将鼠标放在上头,边上底下有个叉,点一下就收起来了

【笔记】Oracle Offset 以及力扣

【笔记】Oracle Offset

offset 代表跳过前 n 行,如果表少于 n+1 条记录,结果集将是空的;比如 n = 100,表示从 101 开始往后查。

fetch next 代表往后查 n 行;

next 和 first 可互换;

row 和 rows 可互换;

offset 语法:
类似于

-- 从第20条开始取下10条记录
SELECT * 
FROM table_name
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY;

力扣题目:https://leetcode.cn/problems/human-traffic-of-stadium/

编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。
返回按 visit_date 升序排列 的结果表

/*简单来说就是把当前行的前两行和后两行都用开窗函数拿到,然后查一下有没有三行都是大于100的,就有了,因为就算是五行连续的,那也会因为每一行的数据而取出来*/
select id, visit_date, p3 as people from (
    select 
        id, to_char(visit_date, 'yyyy-MM-dd') as visit_date,
        lag(people, 2, null) over(order by id) as p1,
        lag(people, 1, null) over(order by id) as p2,
        people as p3,
        lead(people, 1, null) over(order by id) as p4,
        lead(people, 2, null) over(order by id) as p5
    from stadium
) where (p1 >= 100 and p2 >= 100 and p3 >= 100) 
     or (p2 >= 100 and p3 >= 100 and p4 >= 100)
     or (p3 >= 100 and p4 >= 100 and p5 >= 100)
posted @   DbWong_0918  阅读(1039)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示