문제. leetcode database 180. Consecutive Numbers
SQL Schema & Explanation
Write a SQL query to find all numbers that appear at least three times consecutively.
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
For example, given the above Logs table,
1 is the only number that appears consecutively for at least three times.
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1 |
+-----------------+
출처 : leetcode 180. Consecutive Numbers
나의 풀이
# Write your MySQL query statement below
select distinct l1.Num ConsecutiveNums
from Logs l1
where 3 = (select count(*)
from Logs l2
where l2.Id between l1.Id and l1.Id+2
and l2.Num = l1.Num)
최소 3번 이상 연속적으로 등장한 숫자를 모두 찾으라고 요구하는 문제입니다.
단순히 3번 이상 등장한 것이 아닌 연속적으로 등장한 숫자를 찾는 것이므로 where문에 서브쿼리를 이용하였습니다.
먼저, 3번 이상 연속적으로 등장한 숫자 중 똑같은 숫자가 있을 수 있으므로 distinct 처리해줬습니다.
where l2.Id between l1.Id and l2.Id+2 and l2.Num = l1.Num는 l1.id부터 l1.id+2 구간 중에서 숫자가 연속적으로 똑같이 나올 조건을 충족시켜주는 구문입니다.
Example은 상당히 간단해서 쉬운 문제일 줄 알았는데 생각보다 풀기가 쉽지 않은 문제였습니다.
반응형
'Tests > Leetcode' 카테고리의 다른 글
[리트코드] 197. Rising Temperature (MySQL) (0) | 2021.05.27 |
---|---|
[leetcode] MySQL > 596. Classes More Than 5 Students (0) | 2021.02.08 |
[leetcode] MySQL > 183. Customers Who Never Order (0) | 2020.09.12 |
[leetcode] MySQL > 185. Department Top Three Salaries (0) | 2020.09.11 |
[leetcode] 177. Nth Highest Salary (MySQL) (0) | 2020.09.10 |
댓글