• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

HAVING 절에 MAX()사용 결과에 따른 질문

21.02.26 15:32 작성 조회수 2.98k

2

안녕하세요, 강사님.
덕분에 잘 배우고 있습니다.

GROUP BY 문제풀이 강의 중,
Top Earners  문제에서 아래 쿼리문을 만들었습니다.

SELECT salary * months AS earnings
              ,  COUNT(*)
FROM employee
GROUP BY earnings
HAVING MAX(earnings);

HAVING 절에서 MAX() 사용하면 earnings 컬럼(?)에 있는
값 중 큰 값이 나오니까 ORDER BY은 필요 없다.라고 생각 했는데  결과를 보니 아니였습니다.

그래서 
ORDER BY earnings DESC
LIMIT 1;
위 2 줄을 더 추가 했더니 PASS가 되었습니다.

여기서 질문은 HAVING MAX(earnings)에서 가장 큰 값 하나만 안나오는 이유가 무엇인가요?

감사합니다ㅡ

답변 1

답변을 작성해보세요.

1

안녕하세요!

HAVING 은 GROUP BY 에서 집계한 결과물을 가지고 filtering을 하는 장치로,  earnings를 기준으로 집계한 COUNT(*)로 필터링을 할 수는 있지만 GROUP BY의 기준이 되는 컬럼인 earnings로 MAX(earnings) 와 같은 새로운 연산을 하는 기능은 없습니다.

감사합니다 :)