[leetcode]180. Consecutive Numbers[다시풀기]

김준석·2024년 2월 20일

코딩테스트 - SQL

목록 보기
69/96
post-thumbnail

문제

https://leetcode.com/problems/consecutive-numbers/description/?envType=study-plan-v2&envId=top-sql-50

정렬된 id를 기준으로 연속으로 3번이상 나오는 num을 추출하는 문제

코드

WITH L_M AS(
    SELECT id, num AS num_m
    FROM Logs
),
L_B AS(
    SELECT id, num AS num_b
    FROM Logs
),
L_A AS(
    SELECT id, num AS num_a
    FROM Logs
)
SELECT
    DISTINCT num_m AS ConsecutiveNums
FROM(
    SELECT
        L_B.*, L_M.num_m, L_A.num_a
    FROM L_M
        RIGHT JOIN L_B
            ON L_M.id=L_B.id-1
        INNER JOIN L_A
            ON L_M.id=L_A.id+1
) AS inner_table
WHERE 1=1
    AND num_b = num_m
    AND num_m = num_a

풀이 후기

나 같은 경우 너무 복잡하게 푼 것 같다.
num컬럼을 중간, 그 이전, 그 이후를 테이블화해서 join 후 3개의 컬럼이 같을때 값을 추출하도록 했다.
다음번엔 윈도우함수를 써서 진행해보자.

0개의 댓글