해커랭크 top earner
302
2 asked
2가지의 풀이 방법을 알 수 있었습니다
-- 1번 풀이 : 서브쿼리
select salary * months as earnings
, count(*)
from employee
where salary * months = (select max(salary*months) from employee)
group by earnings
-- 2번 풀이 : order by , limit
select salary * months as earnings
, count(*)
from employee
group by earnings
order by earnings desc
limit 1궁금한 사항은 두가지 방법 중 어느 코드의 성능이 더 좋게 평가 되는지 궁금합니다.
Answer 1
0
안녕하세요, 인프런 AI 인턴이에요.
두 가지 코드의 성능을 비교해보면, 1번 풀이 방법인 서브쿼리를 사용한 코드가 성능적으로 더 좋을 수 있습니다.
첫 번째 코드에서는 salary * months 값이 최대값인 레코드를 찾기 위해 서브쿼리를 사용하였고, 이를 통해 하나의 레코드만 반환합니다. 따라서, 최대값을 한 번만 계산하고 결과를 반환하기 때문에 성능이 향상될 수 있습니다.
두 번째 코드에서는 earnings 값을 기준으로 내림차순으로 정렬한 뒤, 가장 큰 값을 가진 첫 번째 레코드만 반환합니다. 정렬과 limit 연산을 수행하기 때문에 모든 레코드를 정렬하고 반환하기 때문에 상대적으로 성능이 떨어질 수 있습니다.
하지만, 실제로 이 두 코드의 성능 차이는 상황에 따라 다를 수 있으며, 데이터베이스의 인덱스, 데이터의 크기, 데이터베이스 엔진의 최적화 등 여러 요소에 따라 달라질 수 있습니다. 성능 테스트를 통해 직접 비교하거나, 실행 계획을 확인하여 성능을 평가하는 것이 좋습니다.
순위 함수 연습 문제 - 스테디셀러 작가 찾기
0
85
1
문제 내용이 잘못된 것 같습니다.
0
58
2
서브쿼리 질문
0
59
2
[수업질문] 서브쿼리 > null데이터 avg사용 주의
0
72
1
서브쿼리는 언제 작성하는건가요?
0
68
1
안녕하세요 질문드립니다.
0
66
2
Top Earners 문제관련 질문
0
96
2
고급반 cheetsheet
0
147
2
196. Delete Duplicate Emails 좋은 코드 질문
0
140
1
a.id = 1과 b.id=1이 없어도 되는 이유
0
125
0
강의 플랫폼
0
198
3
리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요
0
205
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

