inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 고급 SQL

리트코드 조인 조건이 특이한 문제 풀이 + 2개 이상 셀프 조인하기

이런 방법은 어떤가요

해결된 질문

267

홍승규

작성한 질문수 1

1

실업무에서 연속된 숫자를 찾을 때 다음과 같은 방법을 이용하는데, 다중 셀프 조인과 비교했을 때 어떤 방식이 좀 더 효율적인지 궁금합니다. 

(쿼리문이 좀 엉망으로 복붙되는 듯합니다)

select

        ConsecutiveNums = Num

from

    (

        select

                rk = rank () over (partition by Num order by Id)

                , conse = rank () over (partition by Num order by Id) + (100 - Id)

                , *

        from Logs 

    ) as a

group by Num, conse

having count(*) >= 3

sql

답변 4

1

윤선미

LeetCode 에서 왼쪽 상단에 탭을 보시면 Description 이 첫 번째 탭이고 네 번째에 Submissions 가 있는데요. 여기에서 제출한 답의 처리 속도를 보여줍니다. 제가 했을 때에는 강의의 솔루션이 약간 속도가 더 빠르게 나오네요.

하지만 이건 테이블 설계가 어떻게 되어있는지, 어떤 DBMS를 사용하는지에 따라서 달라질 수 있는 문제인 것 같습니다.

https://dba.stackexchange.com/questions/158374/performance-comparison-between-using-join-and-window-function-to-get-lead-and-la

이외에, 문제에서는 3번 연속된 숫자를 찾으라고 했지만 만약 100번 연속되는 숫자를 찾아야 한다거나 1000번 연속된 무언가를 찾아야 할 때에는 승규님이 올려주신 방법이 더 간결하고 직관적이라고 생각됩니다. 속도 면에서도 100번, 1000번 셀프조인을 하는 것보다 훨씬 좋을 것 같고요.

속도 차이는 이렇게 상황에 따라서 달라질 수 있으니, 속도가 중요한 테스크를 수행하신다면 개발 환경과 동일한 조건에서 비교 테스트를 해보시는게 좋을 것 같습니다.

좋은 풀이 감사합니다.

0

홍승규

서브미션이 있는 걸 못 봤네요! 긴 답변 감사드립니다. 좋은 강의 잘 들었습니다. 

0

홍승규

리트코드 Consecutive Numbers  문제였습니다! 

0

윤선미

쿼리에 표시된 컬럼들의 정보를 알 수 있어야 쿼리 해석을 할 수 있을 것 같은데요.

혹시 쿼리에 표시된 Num, Id, Logs 에 어떤 값들이 들어가 있는지 대략 설명 해 주실 수 있을까요?

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

85

1

문제 내용이 잘못된 것 같습니다.

0

58

2

서브쿼리 질문

0

59

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

72

1

서브쿼리는 언제 작성하는건가요?

0

67

1

안녕하세요 질문드립니다.

0

66

2

Top Earners 문제관련 질문

0

96

2

고급반 cheetsheet

0

146

2

196. Delete Duplicate Emails 좋은 코드 질문

0

140

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

125

0

강의 플랫폼

0

197

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

204

2

ERD 읽는법에 추가 질문 있어요

0

249

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

355

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

295

1

평균 함수 사용할 때 주의점과 해결법

0

259

1

196. subquery로 풀 때, 궁금한 점

0

382

2

쿼리성능 질문드립니다.

0

312

1

리트코드 highest department salary 문제

0

257

2

The report 문제 order by부분 질문

0

269

2

리트코드 서브쿼리 문제 질문

0

420

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

235

1

서브쿼리의 활용사례 및 조인관련질문

0

282

1