SQL查询:找出至少连续出现三次的所有数字
找出至少连续出现三次的数字
表定义:Logs
| 列名(Column Name) | 类型(Type) |
|---|---|
| id | int |
| num | varchar |
在SQL中,id是该表的主键,且为自增列。
需求
找出所有至少连续出现三次的数字,返回结果表的顺序不限。
示例1
输入
Logs表:
| id | num |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
输出
| ConsecutiveNums |
|---|
| 1 |
解释
1是唯一至少连续出现三次的数字。
参考SQL代码
WITH data AS ( SELECT num, LEAD(num, 1) OVER(ORDER BY id) AS x1, LEAD(num, 2) OVER(ORDER BY id) AS x2 FROM Logs ) SELECT DISTINCT num AS ConsecutiveNums FROM data WHERE num = x1 AND x1 = x2;
注:原参考代码中ORDER BY num存在逻辑错误——连续出现的判定需基于自增主键id的顺序,因此修正为ORDER BY id
内容的提问来源于stack exchange,提问作者user22460984
相关产品推荐
相关产品推荐

