180. 连续出现的数字
Question
表:Logs
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| num | varchar |
+-------------+---------+
在 SQL 中,id 是该表的主键。
id 是一个自增列。
找出所有至少连续出现三次的数字。
返回的结果表中的数据可以按 任意顺序 排列。
结果格式如下面的例子所示:
示例 1:
输入: Logs 表: +----+-----+ | id | num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+ 输出: Result 表: +-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +-----------------+ 解释:1 是唯一连续出现至少三次的数字。
Answer
SELECT
DISTINCT num as 'ConsecutiveNums'
FROM
(
SELECT
id,
num,
Lead(num,1) OVER(ORDER BY id) as 'next',
Lead(num,2) OVER(ORDER BY id) as 'next2'
FROM
Logs
)n
WHERE
num = next and next = next2
LEAD/ LAG(column1_name,offset) OVER(ORDER BY column2_name) 統計窗口向上/下移動 n行
在計算同比環比的時候會常常用到


被折叠的 条评论
为什么被折叠?



