[Leetcode] 180. Consecutive Numbers

bradley·2022년 6월 11일

SQL

목록 보기
5/5

Problem



Solution


1) 3번 연속 JOIN 사용

3번 연속적으로 나타난다는 것의 의미는 아래와 같이 numid가 3번 옆으로 나란히 있다는 것을 말한다. 따라서 Log 테이블을 3번 이용해 접근할 수 있다.

target data로 위 3개의 테이블 중 어떤 num을 가져와도 되며, 연속 3번 나오는 num이 여러개 나와 중복이 발생할 수 있으므로 DISTINCT 처리를 해준다.

SELECT DISTINCT
    l1.num AS ConsecutiveNums
FROM 
    Logs l1, 
    Logs l2, 
    Logs l3
WHERE
    l1.id = l2.id - 1
    AND l2.id = l3.id - 1
    AND l1.num = l2.num
    AND l2.num = l3.num

2) WHERE절로만 접근

Logs 테이블을 두 번 더 불러오는 것은 동일하다.

SELECT DISTINCT
    num AS ConsecutiveNums
FROM Logs
WHERE 
    (id + 1, num) IN (SELECT * FROM Logs) 
    AND (id + 2, num) in (SELECT * FROM Logs)
profile
데이터 엔지니어링에 관심이 많은 홀로 삽질하는 느림보

0개의 댓글