Consecutive Numbers

medium database window function

Problem

Find all numbers that appear at least three times consecutively in the Logs table ordered by id.

SQL: SELECT DISTINCT num AS ConsecutiveNums FROM (SELECT num, LAG(num,1) OVER (ORDER BY id) p1, LAG(num,2) OVER (ORDER BY id) p2 FROM Logs) t WHERE num = p1 AND num = p2;

InputLogs.num order by id = [1, 1, 1, 2, 1, 2, 2]
Output[1]

SELECT DISTINCT num AS ConsecutiveNums
FROM (SELECT num,
             LAG(num, 1) OVER (ORDER BY id) AS p1,
             LAG(num, 2) OVER (ORDER BY id) AS p2 FROM Logs) t
WHERE num = p1 AND num = p2;
Time: O(n) Space: O(n)