본문 바로가기

SQL/LeetCode

LeetCode / 180. Consecutive Numbers / MySQL / Medium / OVER, LAG,LEAD

728x90

📚문제

출처 : LeetCode(https://leetcode.com/problems/consecutive-numbers/)


📝풀이

# Write your MySQL query statement below
SELECT DISTINCT num AS ConsecutiveNums
FROM (SELECT id,
             num,
             LAG(num) OVER (ORDER BY id) AS prev_num,
             LEAD(num) OVER (ORDER BY id) AS next_num
      FROM Logs) consecutive
WHERE num = prev_num 
  AND num = next_num

 

 

✅OVER

- SQL에서 윈도우 함수(window function)를 적용할 때 사용하는 구문

- 특정 창(window) 또는 범위(range)내에서 계산 수행 

- OVER 구문은 창이나 범위 의미

 

id를 기준으로 정렬하여 윈도우함수 생성하고

앞뒤 행의 num 값 가져오기

그리고 이렇게 생성된 테이블에서 

현재행,이전행,다음행의 num이 모두 같은 경우(num이 세번연속 같은 숫자인 경우)일 때의

num을 가져오기

728x90