작성
·
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