우노
[Window Function] LeetCode 180번 “Consecutive Numbers” 풀이 본문
SQL/Window Function
[Window Function] LeetCode 180번 “Consecutive Numbers” 풀이
운호(Noah) 2022. 12. 11. 19:40문제 링크
풀이
연속으로 세 번 이상 나타나는 모든 숫자를 찾는 SQL 쿼리를 작성하면 되는 문제입니다.
Window Function과 LEAD를 사용해 해결할 수 있습니다.
먼저, 아래와 같은 서브쿼리를 작성합니다.
SELECT num, LEAD(num, 1) over(ORDER BY id) AS next, LEAD(num, 2) over(ORDER BY id) AS nextafter FROM Logs
| num | next | nextafter | | --- | ---- | --------- | | 1 | 1 | 1 | | 1 | 1 | 2 | | 1 | 2 | 1 | | 2 | 1 | 2 | | 1 | 2 | 2 | | 2 | 2 | | | 2 | | |
서브쿼리 결과값 중, Num, Next, NextAfter가 모두 일치하는 Num을 반환하면 됩니다.
또한, DISTINCT를 사용해 중복된 Num은 제거하면 됩니다.
전체 쿼리는 아래와 같습니다.
전체 쿼리
SELECT DISTINCT sub.num AS ConsecutiveNums
FROM (
SELECT num,
LEAD(num, 1) over(ORDER BY id) AS next,
LEAD(num, 2) over(ORDER BY id) AS nextafter
FROM Logs
) sub
WHERE sub.num = sub.next and sub.next = sub.nextafter
'SQL > Window Function' 카테고리의 다른 글
[Window Function] LeetCode 178번 “Rank Scores” 풀이 (0) | 2022.12.12 |
---|---|
[Window Function] LeetCode 185번 “Department Top Three Salaries” 풀이 (0) | 2022.12.11 |
[Window Function] LeetCode 184번 “Department Highest Salary” 풀이 (0) | 2022.12.11 |
Comments