[SQL#109]180. Consecutive Numbers

Gi Woon Lee·2024년 8월 16일

SQL

목록 보기
7/33

180. Consecutive Numbers

1. 문제 이해

주어진 문제는 Logs라는 테이블에 저장된 숫자(num) 값 중 연속된 세 개의 행에서 같은 숫자를 찾는 것이다.
예를 들어, 연속된 세 행의 num 값이 모두 5라면, 그 5를 출력해야 한다.

2. SQL 쿼리 작성

elect distinct l1.num ConsecutiveNums
from Logs l1 
join Logs l2 on l1.id = l2.id + 1 
join Logs l3 on l2.id = l3.id + 1
where l1.num = l2.num and l2.num = l3.num
  1. 먼저, Logs 테이블을 세 번 자기 조인(self-join)합니다. 각 조인은 연속된 세 개의 행을 비교할 수 있도록 id 값을 이용해 연결합니다.

    • l1은 현재 행
    • l2는 현재 행의 다음 행 (id + 1)
    • l3는 현재 행의 그 다음 행 (id + 2)
  2. 세 개의 num 값이 동일한지를 확인합니다. 이 조건을 만족하는 오리지널 Log테이블의 num을 선택합니다.

  3. 결과적으로, 중복된 결과를 제거하기 위해 DISTINCT를 사용하여 최종 결과를 출력합니다.

3. 쿼리 실행 및 검증

작성한 SQL 쿼리를 실행하여 문제에서 요구하는 결과가 제대로 출력되는지 확인합니다. 쿼리 결과가 예상대로라면, 제출하여 문제를 해결합니다.

4. 알게 된 점

  1. joinkey_columnon 연산자로 연결할 때 연산이 가능하다는 점.
    : join Logs l2 on l1.id = l2.id + 1 <- 바로 이렇게

  2. alias는 숫자로는 못한다. logs 1 은 오류가 나옴. logs l1 으로 해야함 .

0개의 댓글