본문 바로가기

코딩일기

SQL 코드카타 109 - Consecutive Numbers

https://leetcode.com/problems/consecutive-numbers/

 

Column Name Type
id int
num varchar

 

Logs 테이블:

 

  • id: 테이블의 기본키
  • num: 숫자

적어도 세 번 연속으로 나타나는 모든 숫자를 찾으세요.

 

쿼리를 자체결합해서 풀어낼 수 있었다.

SELECT distinct l1.num ConsecutiveNums
FROM Logs l1
JOIN Logs l2 ON l1.id = l2.id - 1
JOIN Logs l3 ON l1.id = l3.id - 2
where l1.num = l2.num and l1.num = l3.num

 

인터넷검색을 하면서 발견한 방법인데 결합하려는 열에 연산을 적용해서 원하는 만큼 당겨서 join을 할 수 있었다. 위의 방법을 통해서 간단하게 현재 데이터에서부터 연속하는 세개의 데이터를 같은 열로 결합해낼 수 있었다.

l1이 현재 숫자, l2가 다음 숫자, l3가 그 다음 숫자이므로 한 열에서 세 숫자가 모두 같은 경우를 where로 필터링해서 출력해주면 된다.