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

헤아님의 프로필 이미지
헤아

작성한 질문수

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

GROUP BY 해커랭크 문제풀이

해커뱅크 top earners 질문

작성

·

200

3

안녕하세요, 해커뱅크 top earners 문제와 관련하여 질문드려요.

----------------------------------------------------

SELECT months*salary AS earnings

    , count(earnings) -- 여기에 earnings를 카운트하고 싶어서 이렇게 넣었는데 자꾸 오류가 나더라구요, 왜 그런가요?

FROM employee

GROUP BY earnings

ORDER BY earnings DESC

LIMIT 1

----------------------------------------------------

----------------------------------------------------

SELECT MAX(months*salary) AS earnings, COUNT(earnings)

FROM employee

-- 이건 제가 짠 코드인데, 에러 이유를 잘 모르겠어요! 1) 맥스 연봉을 earnings라고 하고, 2) 그 값을 찾고 3) 그 값을 가진 사람들이 몇 명인지 카운트를 하면 될 것 같은데 에러가 뜨더라구요. 혹시 설명해주실 수 있나요?

----------------------------------------------------

감사합니다!

답변 2

1

윤선미님의 프로필 이미지
윤선미
지식공유자

헤아님, 안녕하세요!

1) MAX 연봉을 earnings라고 정의를 잘 해주셨어요.
2) 하지만, 이 MAX 연봉을 정보로 해서 데이터를 필터링 하는 부분을 생략하셨습니다.

헤아님의 아이디어대로 문제를 풀기 위해서는 서브쿼리라는걸 약간 사용해야 하는데요.
서브쿼리가 중급반 내용이 아니라 약간 어려우실 수 있지만 예시를 적어드릴게요.

SELECT MAX(months * salary), COUNT(name)
FROM employee
WHERE months * salary = (SELECT MAX(months * salary) FROM employee)

이렇게 쿼리 안에 쿼리를 넣어서, 최대 earnings를 가지는 사람들을 WHERE절에서 필터링을 해 준 후 카운트 함수를 사용하시면 됩니다 :) 서브쿼리가 사용법이 약간 복잡해서, 고급반에서 다루려고 하고요. GROUP BY를 사용해서 푸시는게 가장 직관적인 풀이라고 생각해요.

0

헤아님의 프로필 이미지
헤아
질문자

빠른 답변 감사드립니다! 답변 읽고 생각을 좀 해보니 이해가 가네요 :)

헤아님의 프로필 이미지
헤아

작성한 질문수

질문하기