题目描述
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+
例如,给定上面的 Logs
表, 1
是唯一连续出现至少三次的数字。
+-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +-----------------+
代码
/* Write your T-SQL query statement below */
select
distinct num as consecutivenums
from
(
select
a.num as num
,case when a.num=b.num and b.num = c.num then 1
else 0
end as is_consecutive
from logs a
left join logs b
on a.id+1 = b.id
left join logs c
on a.id+2 = c.id
where c.id is not null
)t
where is_consecutive=1
##问题:如果需要找连续十次出现的数字,那需要十张表相连,不太科学,可以尝试使用用户变量
# Write your MySQL query statement below
select
distinct num as consecutivenums
from
(
select
num
,case when @prev = num then @count := @count + 1
when (@prev := num) is not null then @count := 1
end as cnt
from logs, (select @prev := null,@count := null) as t
) temp
where temp.cnt >= 3