인프런 커뮤니티 질문&답변

IIxxII님의 프로필 이미지
IIxxII

작성한 질문수

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

Top Earners 질문있습니다

작성

·

134

0

안녕하세요. 아래 쿼리로 실행할 시 에러가 나던데 혹시 어느부분이 잘못된건가욤??

해커랭크 - Top Earners

SELECT months*salary earnings,

                COUNT(employee_id)

FROM Employee

GROUP BY earnings

HAVING earnings =MAX(months*salary) 

답변 1

0

이보민님의 프로필 이미지
이보민
지식공유자

안녕하세요 IIxxII님,

해당 문제에서는 직원들의 earnings 금액 별로 받고 있는 사원의 수를 구하고 그중에서 가장 높은 earnings를 가진 데이터만 뽑아오는 것을 조건으로 하고 있습니다.

HAVING 구문은 GROUP BY를 통해 묶인 각각의 그룹에 대해서 조건을 걸어 조건을 만족하는 그룹 데이터만 표시하게끔 필터링을 할 수 있는 구문인데요. HAVING을 통해서 그룹간의 비교를 하는 것은 어렵습니다.

ex) earnings = 1000 인 그룹만 필터링을 하는 것은 각 그룹에 대해 earnings가 1000인지 아닌지를 판단하면 되는 것이므로 필터링이 가능합니다.

그러나 어떤 그룹의 earnings 값이 가장 큰지, 또 그값과 같은 earnings를 가진 그룹이 무엇인지를 찾는 것은 HAVING 구문으로는 구할 수 없습니다.

ORDER BY, LIMIT를 이용하지 않고 문제 풀이를 하는 방법으로는 고급반에서 다루게 되는 개념인 서브쿼리를 이용하시는 방법도 있으니 참고해주시면 좋을 것 같습니다.

궁금증이 해소되셨길 바랍니다. 감사합니다.

IIxxII님의 프로필 이미지
IIxxII

작성한 질문수

질문하기