문제설명
Table: Logs
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| num | varchar |
+-------------+---------+
id is the primary key for this table.
Write an SQL query to find all numbers that appear at least three times consecutively.
Return the result table in any order.
The query result format is in the following example.
Example 1:
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.
문제 코드
# Write your MySQL query statement below
SELECT DISTINCT first.num AS ConsecutiveNums
FROM Logs AS first
INNER JOIN Logs AS second ON first.id +1 = second.id
INNER JOIN Logs AS third ON second.id +1 = third.id
WHERE first.num = second.num AND second.num = third.num
문제 해석
처음에 INNER JOIN을 하여 id 값보다 1이 큰 값을 가져온다. 이 작업을 2번 반복하여 총 3개의 row가 가진 값들을 하나로 이어준다.
그 후 where문을 통해 first,second,thrid의 num값들이 같은 행을 불러온다. 그다음 DISTINCT를 통해 중복값을 제거해준 후 AS를 통해 출력문의 조건에 맞춰 ConsecutiveNums 라는 별칭으로 바꿔주면 된다.
'SQL > MySQL' 카테고리의 다른 글
[MySQL] 윈도우함수로 예제 문제 풀어보기 (LeetCode - consecutive-numbers) (0) | 2022.02.25 |
---|---|
[MySQL] 윈도우함수(Window Functions) (0) | 2022.02.25 |
[MySQL] 조인조건이 특이한 문제 풀어보기 (Hacker Rank - The Report )풀어보기 (0) | 2022.02.23 |
[MySQL] with 절 사용 법 및 예제 (0) | 2022.02.16 |
[MySQL] Subquery를 이용한 심화문제 (Hacker Rank - Challenges)풀어보기 (0) | 2022.02.16 |