SQL-每日一题【180.连续出现的数字】

题目

表:Logs

SQL-每日一题【180.连续出现的数字】_第1张图片

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

返回的结果表中的数据可以按 任意顺序 排列。

查询结果格式如下面的例子所示:


示例 1:

SQL-每日一题【180.连续出现的数字】_第2张图片

解题思路

1.要查询至少连续出现三次的数字,则可以转化为(id+1)对应的 num 存在于此表中,(id+2)对应的 num 也存在于表中。

2.括号表示二元元组,然后in子查询的结果也是由二元元组构成的表,因为二元元组相等是对应元素分别相等嘛,所以也就是说(id+1,num)需要在表 logs里,(id+2,num)也需要在表 logs里。

代码实现

SELECT DISTINCT Num AS ConsecutiveNums FROM Logs 
WHERE (Id+1, Num) IN (SELECT * FROM Logs)
AND (Id+2, Num) IN (SELECT * FROM Logs)

测试结果

SQL-每日一题【180.连续出现的数字】_第3张图片

 

你可能感兴趣的:(SQL每日一题,sql,数据库)