홍동이의 성장일기
[LeetCode] 180. Consecutive Numbers 본문
WITH cte_lead AS(
SELECT num
, LEAD(num, 1) OVER () AS next_1
, LEAD(num, 2) OVER () AS next_2
FROM logs
)
SELECT DISTINCT num AS ConsecutiveNums
FROM cte_lead
WHERE num = next_1
AND num = next_2
💡 문제풀이
1. 연속되는 3개의 숫자를 확인하기 위해 LEAD 함수를 이용하여 첫번째 뒤에 있는 숫자, 두번째 뒤에 있는 숫자를 가져와줍니다.
SELECT num
, LEAD(num, 1) OVER () AS next_1
, LEAD(num, 2) OVER () AS next_2
FROM logs
2. 조건을 걸어주기 위해 1번에서 만든 식을 임시 테이블에 넣어줍니다.
WITH cte_lead AS(
SELECT num
, LEAD(num, 1) OVER () AS next_1
, LEAD(num, 2) OVER () AS next_2
FROM logs
)
3. num과 next_1, next_1과 next_2가 같은 행을 찾기 위해 WHERE절을 사용해줍니다.
WITH cte_lead AS(
SELECT num
, LEAD(num, 1) OVER () AS next_1
, LEAD(num, 2) OVER () AS next_2
FROM logs
)
SELECT num AS ConsecutiveNums
FROM cte_lead
WHERE num = next_1
AND next_1 = next_2
4. 아래와 같이 중복 결과가 나오는 경우가 발생하기 때문에 DISTINCT로 중복을 제거해줍니다.
📍본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.
728x90
'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글
[LeetCode] 185. Department Top Three Salaries (0) | 2023.08.23 |
---|---|
[LeetCode] 511. Game Play Analysis I (0) | 2023.08.22 |
[MySQL] RegexOne 정규표현식 Lesson 1 ~5 예제 풀이 및 설명 (0) | 2023.08.21 |
[LeetCode] 1084. Sales Analysis III (0) | 2023.08.18 |
[LeetCode] 1045. Customers Who Bought All Products (0) | 2023.08.16 |
Comments