인프런 강의 <데이터 분석을 위한 고급 SQL>을 듣고, 중요한 점을 정리한 글입니다.
리트코드 Consecutive Numbers
Find all numbers that appear at least three times consecutively.
Return the result table in any order.
The result format is in the following example.
SELECT L1.num AS ConsecutiveNums
FROM logs AS L1
INNER JOIN logs AS L2 ON L1.num = L2.num
GROUP BY L1.num
HAVING ?
: num이 연속으로 최소 3번 이상 나오는 것을 HAVING 절에 구현해야 할 것 같은데. 어떻게 구현해야 할지 모르겠다.
SELECT DISTINCT L.num AS ConsecutiveNums
FROM Logs AS L
INNER JOIN Logs AS L_next ON L.id + 1 = L_next.id
INNER JOIN Logs AS L_next2 ON L.id + 2 = L_next2.id
WHERE L.num = L_next.num AND L.num = L_next2.num
연속으로 나오는 숫자는 INNER JOIN을 여러개 써서 구현할 수 있다. 이때, INNER JOIN에 'L.id + 1 = L_next.id' 이런 식으로 INNER JOIN을 여러번 써서 연속으로 나오는 숫자를 구현.
연속으로 나오는 숫자를 구현할 때, WHERE절에서 A, B, C가 있을 경우에 A = B, A = C 로 구현하면 된다.