https://www.youtube.com/watch?v=zXKvo_8G9sU

CREATE TABLE logs (
    id INT PRIMARY KEY,
    num INT
);

INSERT INTO logs (id, num) VALUES
(1, 1),
(2, 1),
(3, 2),
(4, 2),
(5, 2),
(6, 1),
(7, 3),
(8, 4),
(9, 4);

Pasted image 20260107162750.png

WITH
ROW_NUMBER()

WITH CTE AS 
(SELECT 
	*,
    ROW_NUMBER() OVER (PARTITION BY num ORDER BY id ASC) AS rn,
    id - ROW_NUMBER() OVER (PARTITION BY num ORDER BY id ASC) AS grp
FROM logs)

SELECT 
	id, num
FROM CTE
GROUP BY grp
HAVING COUNT(grp) = 3

Pasted image 20260107162840.png