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

Yeji Lee님의 프로필 이미지
Yeji Lee

작성한 질문수

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

서브쿼리 리트코드 문제풀이

department highest salary 문제풀이 관련 질문있습니다!

작성

·

172

2

안녕하세요 선생님! 고급반에서 또 뵙네요 ^^ 

다름이 아니라, department highest salary 를 subquery로 푸는과정에서 

SELECT d.Name AS Department

               , e.Name AS Employee

               , e.Salary 

FROM Employee AS e

                    INNER JOIN Department AS d ON e.DepartmentId = d.Id

WHERE Salary IN (SELECT MAX(Salary) FROM  Employee GROUP BY DepartmentId) 

이렇게해서 RUN CODE 했을경우, Accepted 되었는데, 막상 Submission 하면 틀렸다고 하네요! 선생님 문제 풀이과정도 충분히 이해가 가는데, 혹시 여기서 어떤 부분이 틀렸는지 알려주실 수 있나요?! 

답변 2

1

Yeji Lee님의 프로필 이미지
Yeji Lee
질문자

답변감사드립니다 ^^ 수업에 배운내용 덕분에 data analyst로 이직 했습니다! 감사합니다 

Data analyst 취준에 대해 좀 더 알려주실 수 있을까요?

0

송혜정님의 프로필 이미지
송혜정
지식공유자

안녕하세요 Yeji Lee님, 답변 드립니다.

우선, Run code 시에는 Description의 데이터로 테스트를 진행하며, 작성해주신 쿼리는 Description의 데이터에는 문제가 없기때문에 Accepted 되었습니다. Submission을 할 때는 Description의 데이터가 아닌 다른 데이터로 테스트를 진행하는 데요, 좌측 Submissions 탭의 Input 데이터를 확인해보시면 어떤 데이터가 테스트에 사용되었는지 확인 하실 수 있습니다.

작성해주신 쿼리는,
1) Employee 테이블에서 DepartmentId 별로 각각 Salary의 최대값을 출력하고,
2) 이와 동일한 임금을 가진 (= 최대의 임금을 가진) 사람을 뽑아내는 방식입니다.
DepartmentId 별로 각각의 최대 Salary가 출력되기는 하나, 출력된 Salary가 어떤 DepartmentId의 Salary 인지 알 수 없기 때문에, 최대값으로 출력된 Salary와 같은 사람이라면 모두 출력되는 상황입니다.
따라서 Submission의 Output을 확인해보면 (아래 첨부 이미지 참고),
IT의 max(Salary) = 60000, HR의 max(Salary) = 50000 이며, 모든 Department 내에서 이와 동일하게 50000, 60000의 임금을 가진 모든 사용자가 출력되기 때문에 테스트를 통과하지 못했음을 볼 수 있습니다.

강의에서 INNER JOIN 안에 서브쿼리를 작성해서 DepartmentId와 Salary를 동시에 JOIN 하였기 때문에,
이런 오류 없이 출력이 될 수 있었습니다.


답변이 도움이 되었길 바라며, 더 궁금하신 점이 있으시다면 언제든 질문 남겨주세요.
좋은 질문 감사드립니다 :)


Yeji Lee님의 프로필 이미지
Yeji Lee

작성한 질문수

질문하기