코딩테스트/리트코드

리트코드 DB HARD 문제 601. Human Traffic of Stadium 쿼리/풀이

RyanKwon 2023. 1. 19. 16:53
728x90

https://leetcode.com/problems/human-traffic-of-stadium/description/

 

Human Traffic of Stadium - LeetCode

Human Traffic of Stadium - Table: Stadium +---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | visit_date | date | | people | int | +---------------+---------+ visit_date is the primary key for this table. Each row

leetcode.com

 

사실 솔루션 참고함 ^^.. 전에 빅데이터팀에서 이런 류의 거의 동일한 문제 해결을 위한 쿼리를 팀에서 짯던적이 있는데 사실 내가 짯던게 아니고 + 그 쿼리도 엄청~나게 복잡하면서.. 수 회 오류가 발견됐던 쿼리라서 ..머릿속에 욲여넣지 않았었다. 그래서 다시 품

 

처음 접근은 당연히 전에 했던것처럼 lag나 lead를 쓰려고 했는데 흠~ 잘 안돼서.. 솔루션 참고햇음. 거의똑같이풀엇을듯?

select distinct *
from(
select A.id as id, A.visit_date as visit_date, A.people as people
from Stadium A, Stadium B, Stadium C
where A.people >= 100 and B.people >= 100 and C.people >=100
and
((abs(A.id - B.id) = 1 and abs(B.id - C.id) = 1 and abs(A.id - C.id) = 2)
or
(abs(A.id - B.id) = 1 and abs(B.id - C.id) = 2 and abs(A.id - C.id) = 1)
or
(abs(A.id - B.id) = 2 and abs(B.id - C.id) = 1 and abs(A.id - C.id) = 1)))D
order by id

데이터는 데이터 답게 처리해야 한다고 전에 팀장님이 얘기했었다.

 

그래서 그렇게 풀려고 노력했는데 여전히 잘 안된다.

 

 

전에 빅데이터팀때 쿼리는.. 이렇게 풀어도 되려나?모르겟다. 모든 경우로 union해서 제외하기 vs lag몇번 쓰기.

lag로도 분명 풀릴 문제긴 하거든. 어떻게 하면.. 

 

몇백만 행 짜리를 이런식으로 풀긴 어렵겠지만 코딩테스트에서 데이터 처리하기 위해서 가장 적합한 풀이임은 맞다. 데이터는 이렇게 푸는게 맞으니까. 표로 만들어서 비교하는것.

728x90