Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

leet code sql 601

leet code sql 601

문제 링크 - https://leetcode.com/problems/human-traffic-of-stadium/

문제

  • 사람들이 100명 이상 방문한 곳
  • 최소 3개 이상 연속한 id 값인 경우
  • 방문일 순서대로 정렬
문제 접근

  • cte 절을 활용하여 100명 이상 방문한 곳부터 필터링
  • 연속하여 온지를 확인하기 위해 row number를 같이 활용
  • cnt = id - row_number()는 같은 group 으로 볼 수 있다.
  • cnt를 3회 이상 집계하여 필터링
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 최소 연속 3개가 되도록
-- Idea = id - row number

with info as (
select
    id,
    visit_date,
    people,
    id - row_number() over() rn
from Stadium
where people >= 100
)
select
    id,
    visit_date,
    people
from info
where rn in (
    select 
        rn
    from info
    group by rn
    having count(*) > 2
)
order by visit_date