강의

멘토링

로드맵

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

김혜수님의 프로필 이미지
김혜수

작성한 질문수

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

서브쿼리 해커랭크 문제풀이

Top Earner MAX질문

작성

·

256

0

SELECT *
FROM (
        SELECT name
             , MAX(months*salary) max_earnings
        FROM employee
        GROUP BY name
        ) total_earning
ORDER BY max_earnings DESC

제가 위와 같이 쿼리를 작성했었는데요, 예상과는 다르게 모든 사람들의 earnings가 보여지고 MAX earning 하나만 보여지지는 않더라고요. 그 이유가 name 으로 GROUP BY 했기 때문인가요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

쿼리를 보면, name을 기준으로 GROUP BY를 하고 있어요. 따라서 각 이름별로 최대 earnings을 구하는 것이 맞지만, 각 이름별로 모든 earnings도 함께 보여지게 됩니다.

MAX 함수를 사용하면 모든 그룹 내의 최대 값만을 가져올 수 있어요. 하지만, 쿼리에서는 GROUP BY를 함께 사용하므로 각 그룹별로 최대 값을 가져오게 되는거죠.

만약 각 그룹별로 최대 값을 가져오는 것이 목적이시라면, MAX 함수를 사용하시면 됩니다.

예를 들어,

SELECT name, MAX(months*salary) max_earnings
FROM employee
GROUP BY name
ORDER BY max_earnings DESC;

이렇게 쿼리를 작성하시면 각 이름별로 최대 earnings 값만을 가져올 수 있습니다.

이해가 되셨는지요?
요청하신 내용에 대한 답변이 되었는지 확인 부탁드려요.

김혜수님의 프로필 이미지
김혜수

작성한 질문수

질문하기