문제 출처: https://leetcode.com/problems/consecutive-numbers/description/
1. SELF INNER JOIN을 이용한 풀이
SELECT DISTINCT L1.NUM AS CONSECUTIVENUMS
FROM LOGS L1
JOIN LOGS L2 ON L1.ID + 1 = L2.ID
JOIN LOGS L3 ON L2.ID + 1 = L3.ID
WHERE L1.NUM = L2.NUM
AND L2.NUM = L3.NUM
2. LEAD(당겨오기)를 이용한 풀이
SELECT DISTINCT NUM AS CONSECUTIVENUMS
FROM(
SELECT NUM
, LEAD(NUM, 1) OVER (ORDER BY ID) AS L1
, LEAD(NUM, 2) OVER (ORDER BY ID) AS L2
FROM LOGS) AS L
WHERE NUM = L1
AND L1 = L2
3. LAG(밀어내기)를 이용한 풀이
SELECT DISTINCT NUM AS CONSECUTIVENUMS
FROM(
SELECT NUM
, LAG(NUM, 1) OVER (ORDER BY ID DESC) AS L1
, LAG(NUM, 2) OVER (ORDER BY ID DESC) AS L2
FROM LOGS) AS L
WHERE NUM = L1
AND L1 = L2
NOTE: 당겨오고 밀어낸 부분은 NULL로 채워진다.
본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.
'SQL > LeetCode&HackerRank' 카테고리의 다른 글
[MySQL] HackerRank - SQL Project Planning (0) | 2024.01.22 |
---|---|
[MYSQL] LeetCode 184, 185 - Window Function 사용 풀이 (0) | 2023.05.14 |
[MySQL] HackerRank - Challenges 풀이 (0) | 2023.03.23 |
[MySQL] LeetCode 184 - 서브쿼리와 이너 조인 활용하기 (0) | 2023.01.05 |
[MySQL] HackerRank - Top Earners 풀이 3가지 (0) | 2023.01.04 |