【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 小时前
【力扣-Python-滑动窗口经典题】567.字符串的排列 | 424.替换后的最长重复字符 | 76.最小覆盖子串
算法·leetcode
52Hz1185 小时前
力扣73.矩阵置零、54.螺旋矩阵、48.旋转图像
python·算法·leetcode·矩阵
iAkuya6 小时前
(leetcode)力扣100 二叉搜索树种第K小的元素(中序遍历||记录子树的节点数)
算法·leetcode·职场和发展
Remember_9937 小时前
【LeetCode精选算法】滑动窗口专题二
java·开发语言·数据结构·算法·leetcode
圣保罗的大教堂8 小时前
leetcode 1895. 最大的幻方 中等
leetcode
Remember_9938 小时前
【LeetCode精选算法】滑动窗口专题一
java·数据结构·算法·leetcode·哈希算法
漫随流水9 小时前
leetcode回溯算法(77.组合)
数据结构·算法·leetcode·回溯算法
engchina9 小时前
自然语言转 SQL 并不是“魔法”
数据库·人工智能·sql·text2sql·nl2sql·自然语言转sql
超级大福宝10 小时前
【力扣200. 岛屿数量】的一种错误解法(BFS)
数据结构·c++·算法·leetcode·广度优先
BD_Marathon11 小时前
动态SQL(六)foreach标签2
数据库·sql