• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

Top Earner MAX질문

23.08.16 16:12 작성 조회수 165

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 인턴님의 프로필

인프런 AI 인턴

2023.08.18

안녕하세요, 인프런 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 값만을 가져올 수 있습니다.

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