Image Alt photo_exhibition

Find all numbers that appear at least three times consecutively.

Return the result table in any order.

The result format is in the following example.

Image Alt photo_exhibition

연속적으로 3번 동일한 숫자가 나오는 num을 뽑으면 되는 문제다. 새롭게 배운 윈도우 함수를 통해서 해결을 해보자. 윈도우 함수를 쓰지 않고 푼 풀이는 다른 사람이 푼 건데, 솔직히 나한테는 윈도우 함수를 쓴 풀이가 더 직관적인 느낌이다.

  1. 윈도우 함수를 쓴 풀이
    SELECT DISTINCT num AS ConsecutiveNums 
    FROM (
     SELECT num
         ,LEAD(num, 1) OVER (ORDER BY id) AS num_1
         ,LEAD(num, 2) OVER (ORDER BY id) AS num_2
     FROM Logs
    ) AS c_logs
    WHERE num = num_1 
      AND num_1 = num_2
    
  2. 윈도우 함수를 쓰지 않고 푼 풀이
    SELECT DISTINCT num as ConsecutiveNums
    FROM logs
    WHERE 
      (id + 1, num) IN (SELECT * FROM logs) 
      AND 
      (id + 2, num) IN (SELECT * FROM logs)