【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;
    

中间结果:

相关推荐
郝学胜-神的一滴1 小时前
Leetcode 969 煎饼排序✨:翻转间的数组排序艺术
数据结构·c++·算法·leetcode·面试
zuoerjinshu7 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
I_LPL9 小时前
hot100贪心专题
数据结构·算法·leetcode·贪心
灰色小旋风13 小时前
力扣13 罗马数字转整数
数据结构·c++·算法·leetcode
yhole14 小时前
SQL中的REGEXP正则表达式使用指南
数据库·sql·正则表达式
探索宇宙真理.15 小时前
SiYuan SQL漏洞 | CVE-2026-29073复现&研究
数据库·经验分享·sql·eureka·安全漏洞·siyuan
阿里嘎多哈基米15 小时前
速通Hot100-Day09——二叉树
算法·leetcode·二叉树·hot100
Frostnova丶16 小时前
LeetCode 48 & 1886.矩阵旋转与判断
算法·leetcode·矩阵
多打代码16 小时前
2026.3.22 回文子串
算法·leetcode·职场和发展
im_AMBER16 小时前
Leetcode 144 位1的个数 | 只出现一次的数字
学习·算法·leetcode