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

中间结果:

相关推荐
LYFlied8 小时前
【每日算法】 LeetCode 56. 合并区间
前端·算法·leetcode·面试·职场和发展
XFF不秃头10 小时前
力扣刷题笔记-全排列
c++·笔记·算法·leetcode
菜鸟233号10 小时前
力扣669 修剪二叉搜索树 java实现
java·数据结构·算法·leetcode
yaoh.wang11 小时前
力扣(LeetCode) 100: 相同的树 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
SadSunset11 小时前
力扣题目142. 环形链表 II的解法分享,附图解
算法·leetcode·链表
Java&Develop12 小时前
DataEase图表页面传参至数据库查询方法 和页面筛选方法 sql传参
数据库·sql
iAkuya12 小时前
(leetcode)力扣100 19螺旋矩阵(方向数组/边界把控)
算法·leetcode·矩阵
爱编程的小吴12 小时前
【力扣练习题】热题100道【哈希】 最长连续序列
算法·leetcode·职场和发展
bybitq14 小时前
Leetcode-3780-Python
python·算法·leetcode
如何原谅奋力过但无声14 小时前
【力扣-Python-75】颜色分类(middle)
python·算法·leetcode