반응형
Notice
Recent Posts
Recent Comments
Link
개발은 처음이라 개발새발
JOIN을 통해 연속된 숫자 뽑아보기 [LeetCode] 본문
반응형
https://leetcode.com/problems/consecutive-numbers/
Input:
Logs table:
+----+-----+
| id | num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
Output:
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1 |
+-----------------+
Explanation: 1 is the only number that appears consecutively for at least three times.
이번 퀴즈는 3번 연속된 숫자를 찾는 퀴즈입니다. 활용하는 테이블을 하나이기 때문에 같은 테이블을 조인하는 셀프조인을 활용해야 합니다. 그렇다면 ON에 어떻게 매칭을 시켜야 할까요? logs 테이블을 보면 num은 동일하지만 id가 1씩 높아지는 것을 확인할 수 있습니다. 그렇기에 ON에 매칭을할 때 A.id+1 = B.id 이런식으로 매칭을 하게 되면 A테이블의 id가 1인 것과 B 테이블의 id =2 인 것이 서로 매칭이 됩니다. 그렇다면 매칭과 결과를 보겠습니다.
SELECT DISTINCT l.num AS ConsecutiveNums
FROM logs AS l
JOIN logs AS l2
ON l.id+1 = l2.id
JOIN logs AS l3
ON l.id+2 = l3.id
WHERE l.num = l2.num and l.num = l3.num
_______________________________________________________________________________
output:
| ConsecutiveNums |
| --------------- |
| 1 |
네 이렇게 셀프조인을 통해서 연속된 숫자를 도출했습니다. 3번의 연속된 숫자를 뽑아내야 하기 때문에 두번의 셀프조인을 진행했습니다. 그리고 혹시 중복노출이 나올수도 있으니 SELECT 옆에 DISTINCT를 추가했습니다.
반응형
'mysql' 카테고리의 다른 글
DATE() / DATETIME() / TIMESTAMP() (0) | 2024.02.10 |
---|---|
MySQL 윈도우함수 간단 설명 (0) | 2023.06.26 |
JOIN구문에 들어가는 BETWEEN [해커랭크] (0) | 2023.06.25 |
MySQL WITH문 활용[해커랭크] (0) | 2023.06.11 |
JOIN 서브쿼리 퀴즈[LeetCode] (0) | 2023.06.07 |