인프런 강의 <데이터 분석을 위한 고급 SQL>을 듣고, 중요한 점을 정리한 글입니다.
Table: Logs
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| num | varchar |
+-------------+---------+
In SQL, id is the primary key for this table.
id is an autoincrement column.
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.
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.
SELECT id
, num
, id + 1
, LEAD(num) OVER ?
FROM Logs
SELECT DISTINCT L.num AS ConsecutiveNums
FROM (
SELECT num
, LEAD(num, 1) OVER (ORDER BY Id) AS next
, LEAD(num, 2) OVER (ORDER BY Id) AS afternext
FROM logs
) L
WHERE L.num = L.next AND L.num = L.afternext