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

+----+-----+
| Id | Num |
+----+-----+
| 1  |  1  |
| 2  |  1  |
| 3  |  1  |
| 4  |  2  |
| 5  |  1  |
| 6  |  2  |
| 7  |  2  |
+----+-----+

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1               |
+-----------------+
select Num as ConsecutiveNums  from Logs where Id in (
    select distinct l1.Id from Logs l1,Logs l2,Logs l3
    where (l1.Num = l2.Num and l2.Num = l3.Num and ( 
         (l1.Id + 1= l2.Id  and l2.Id +1 = l3.Id)or
         (l3.Id + 1= l2.Id  and l2.Id +1 = l1.Id)or
         (l3.Id + 1= l1.Id  and l1.Id +1 = l2.Id)
      )
    ) 
order by l1.Id)  group by Num

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄