180. 连续出现的数字
2018-09-23 本文已影响0人
莫小鹏
题目描述
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1 |
+-----------------+
分析
通过子查询来实现。
子查询通过变量构造。
子查询的构造:遍历,Num相等的计数器加一。
代码
select distinct Num as ConsecutiveNums
from (
select @count := if(@prev = Num, @count + 1, 1) as c, Num, @prev := Num
from Logs , (select @count := 0, @prev :=1) init
) t where t.c >= 3;
题目链接
https://leetcode-cn.com/problems/consecutive-numbers/description/