๋ฌธ์
https://leetcode.com/problems/consecutive-numbers/
์ฝ๋
๋์ ๋ต์
# Write your MySQL query statement below
with result as (
select *, lag(num) over (order by id) as prev_num
from logs
),
session_marker as (
select
*,
(case
when prev_num is null then 1
when num = prev_num then 0
else 1
end) as marker
from result
),
session_group as (
select
id,
num,
prev_num,
sum(marker) over (order by id) as grp
from session_marker
)
select distinct num as ConsecutiveNums
from session_group
where grp in
(select grp
from session_group
group by grp
having count(*) >= 3)
-- 5๋ถ
ํ ๋ธ๋ก๊ทธ ๋ต์
SELECT DISTINCT num0 AS ConsecutiveNums
FROM (SELECT id
, num AS num0
, LEAD(num, 1) OVER (ORDER BY id) AS num1
, LEAD(num, 2) OVER (ORDER BY id) AS num2
FROM Logs) logs
WHERE num0=num1 AND num1=num2
๋ฌธ์ ํ์ด
์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ด ์ฐ์์ ์ธ์ง ํ๋ณํ๋ ๋ฌธ์ ์ด๋ค.
์์ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ์ ํ์ต์ ํด์ ๊ทธ๋ฐ๊ฐ
๋น์ทํ ๋ฌธ์ ๋ง ๋ณด๋ฉด ์ธ์ ๋งํน -> ์ธ์ ๊ทธ๋ฃน ์์ฑ -> ์ธ์ ๊ทธ๋ฃน ๋ณ ํ count ์ด๋ฐ ์์ผ๋ก ํ๊ฒ ๋๋ค.
๋ฌธ์ ๋ ๊ทธ๋ ๊ฒ ํ์ง ์์๋ ๋ ๊ฒ๋ค๋ ์ด๋ ๊ฒ ํธ๋๊น ์๊ฐ๋ง ์ก์๋จน์ ๋๊ฐ ์์
์ด ๋ฌธ์ ๋ ์ต์ 3๊ฐ ์ฐ์๋ง ์ถฉ์กฑํ๋ ์ซ์๋ง ๊ตฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
๋ค์ ํ, ๋ค๋ค์ ํ์ ๋์์ ๊ตฌํ๊ณ ๋น๊ตํ๋ฉด ๋๋ค.
๋ด๊ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๊ฒฐ๊ณผ๊ฐ์ ์กฐ๊ฑด์ด ๋ ๋ง์ด ๋ค์ด๊ฐ ๋ ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค.
(์ฐธ๊ณ : https://syimmin-data-analysis.tistory.com/12)
(์ด ์์ ์์๋ ์ธ์ ๋ง๋ค ์๊ฐ์ ์ต์, ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค)
๋๋ ์
๋ฌธ์ ๋ฅผ ์ฝ๊ณ ์ด๋ค ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ ์ ์ ํ ์ง ์๊ฐํด๋ณด๊ณ ์ฝ๋๋ฅผ ์ง์!
