【Leetcode】高频SQL基础题--180.连续出现的数字

【Leetcode】高频SQL基础题--180.连续出现的数字

复制代码
要求:找出所有至少连续出现三次的数字。返回的结果表中的数据可以按 任意顺序 排列。

解题思路:

1、使用SQL窗口函数LAG和LEAD 来获取当前行的前一个和后一个num值,然后检查这三个值是否相同。如果相同,则表示当前行是连续三个相同数字的中间行。

2、最后,使用DISTINCT来去重,确保每个数字只输出一次。

重点:

1、子查询:使用LAG (num, 1) OVER (ORDER BY id)获取当前行的前一个num值,使用LEAD(num, 1) OVER (ORDER BY id)获取当前行的后一个num值。ORDER BY id确保按id顺序处理行。

不熟悉窗口函数,难!

代码:

sql 复制代码
SELECT 
    DISTINCT num AS ConsecutiveNums
FROM (
    SELECT
        id,
        num,
        LAG(num, 1) OVER (ORDER BY id) AS prev_num,
        LEAD(num, 1) OVER (ORDER BY id) AS next_num
    FROM Logs
) t
WHERE 
    num = prev_num AND num = next_num;
    

中间结果:

相关推荐
花青泽4 小时前
5-数据库-SQL注入-联合查询-关键字绕过-day13
数据库·sql
白白白小纯11 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
龙仔72511 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
圣保罗的大教堂14 小时前
leetcode 3517. 最小回文排列 I 中等
leetcode
alphaTao16 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
不剪发的Tony老师17 小时前
VeloxDB:一款免费开源的轻量级数据库管理工具
数据库·sql
dotnet9017 小时前
批量生成所有表的修改脚本
数据库·sql·oracle
灯澜忆梦19 小时前
【MySQL7】多表查询
数据库·sql
Qlittleboy19 小时前
tp5网站链接不上slqserver,计算机积极拒绝了链接
数据库·sql
Hi李耶1 天前
【LeetCode】9-回文数
算法·leetcode·职场和发展