leetcode-180

180. 连续出现的数字

题目描述:

编写一个 SQL 查询,查找所有至少连续出现三次的数字。

1
2
3
4
5
6
7
8
9
10
11
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+

例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。

1
2
3
4
5
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1 |
+-----------------+

代码及解析:

利用distinct去重,以用lead(Num,n) 获取Num的第n行Num值

1
2
3
4
5
6
# Write your MySQL query statement below
select distinct Num ConsecutiveNums
from (select Id,Num,lead(Num,1) over(order by Id) Num2,
lead(Num,2) over(order by Id) Num3
from Logs) as a
where Num=Num2 and Num2=Num3;
hey!baby,站住,点它!