이런 방법은 어떤가요
실업무에서 연속된 숫자를 찾을 때 다음과 같은 방법을 이용하는데, 다중 셀프 조인과 비교했을 때 어떤 방식이 좀 더 효율적인지 궁금합니다.
(쿼리문이 좀 엉망으로 복붙되는 듯합니다)
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
답변 4
1
LeetCode 에서 왼쪽 상단에 탭을 보시면 Description 이 첫 번째 탭이고 네 번째에 Submissions 가 있는데요. 여기에서 제출한 답의 처리 속도를 보여줍니다. 제가 했을 때에는 강의의 솔루션이 약간 속도가 더 빠르게 나오네요.
하지만 이건 테이블 설계가 어떻게 되어있는지, 어떤 DBMS를 사용하는지에 따라서 달라질 수 있는 문제인 것 같습니다.
이외에, 문제에서는 3번 연속된 숫자를 찾으라고 했지만 만약 100번 연속되는 숫자를 찾아야 한다거나 1000번 연속된 무언가를 찾아야 할 때에는 승규님이 올려주신 방법이 더 간결하고 직관적이라고 생각됩니다. 속도 면에서도 100번, 1000번 셀프조인을 하는 것보다 훨씬 좋을 것 같고요.
속도 차이는 이렇게 상황에 따라서 달라질 수 있으니, 속도가 중요한 테스크를 수행하신다면 개발 환경과 동일한 조건에서 비교 테스트를 해보시는게 좋을 것 같습니다.
좋은 풀이 감사합니다.
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
313
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





