DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의
233
20 asked
아래와 같은 쿼리를 리트코드에 입력하였는데, 계속 오류가 났다고 하는데 어디가 잘못되었는지 알 수 있을까요?
그리고 다른 쿼리는 작성했는데
AND e.salary = dh.max_salary
해당 쿼리는 생각을 못하고 그냥 SELECT 최종구문에서 MAX(Salary)를 뽑아내면 된다고 생각했는데 어떤 부분이 잘못되었는지 알 수 있을까요?
감사합니다.
SELECT d.name AS Deparment
, e.name AS Employee
, e.salary as Salary
FROM employee AS e
INNER JOIN(
SELECT departmentid, MAX(salary) AS max_salary
FROM employee
GROUP BY departmentid
) AS dh ON dh.departmentid = e.departmentid
AND e.salary = dh.max_salary
INNER JOIN department AS d ON e.departmentid = d.id
Answer 1
0
안녕하세요, 인프런 AI 인턴이에요.
입력하신 쿼리에는 몇 가지 문제가 있어 보입니다.
첫째로, 서브쿼리에서 “FROM employee”를 사용하셨는데, 서브쿼리와 메인 쿼리에서 같은 테이블 이름을 사용하면 오류가 발생할 수 있습니다. 서브쿼리에서는 또 다른 테이블 별칭을 사용하여 일반적으로 테이블과의 구분을 해주는 것이 좋습니다.
둘째로, 서브쿼리에서 “FROM employee”와 “GROUP BY departmentid”를 사용하셨는데, 이 경우 서브쿼리에서는 departmentid에 따라 최대 급여를 계산하지만, 메인 쿼리에서는 모든 직원을 대상으로 최대 급여를 찾게 됩니다. 따라서 서브쿼리에서 최대 급여를 구하는 것과 메인 쿼리에서 최대 급여를 구하는 것을 일치시켜주어야 합니다.
수정된 쿼리는 다음과 같습니다.
SELECT d.name AS Department, e.name AS Employee, e.salary AS Salary
FROM employee AS e
INNER JOIN(
SELECT departmentid, MAX(salary) AS max_salary
FROM employee
GROUP BY departmentid
) AS dh ON dh.departmentid = e.departmentid
AND e.salary = dh.max_salary
INNER JOIN department AS d ON e.departmentid = d.id
해당 쿼리는 부서별로 가장 높은 급여를 받는 직원을 선택하는 쿼리로 보입니다.
다른 쿼리를 작성하실 때, MAX(Salary)를 직접 선택하면 해당 행에 대한 데이터만 반환되기 때문에, 부서별 최대 급여를 찾기 위해서는 서브쿼리를 사용하는 것이 맞습니다. 따라서 e.salary = dh.max_salary 부분에 대해 수정된 쿼리를 참고하시면 됩니다.
혹시 이외에도 다른 질문이 있다면 언제든지 물어보세요. 감사합니다.
순위 함수 연습 문제 - 스테디셀러 작가 찾기
0
84
1
문제 내용이 잘못된 것 같습니다.
0
57
2
서브쿼리 질문
0
59
2
[수업질문] 서브쿼리 > null데이터 avg사용 주의
0
72
1
서브쿼리는 언제 작성하는건가요?
0
66
1
안녕하세요 질문드립니다.
0
66
2
Top Earners 문제관련 질문
0
95
2
고급반 cheetsheet
0
145
2
196. Delete Duplicate Emails 좋은 코드 질문
0
140
1
a.id = 1과 b.id=1이 없어도 되는 이유
0
125
0
강의 플랫폼
0
197
3
리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요
0
203
2
ERD 읽는법에 추가 질문 있어요
0
249
1
lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답
0
355
2
사용자정의함수
0
230
1
이 문제 inner join이 이해가 안됩니다.
0
294
1
평균 함수 사용할 때 주의점과 해결법
0
259
1
196. subquery로 풀 때, 궁금한 점
0
382
2
쿼리성능 질문드립니다.
0
311
1
리트코드 highest department salary 문제
0
257
2
The report 문제 order by부분 질문
0
268
2
리트코드 서브쿼리 문제 질문
0
418
1
서브쿼리의 활용사례 및 조인관련질문
0
281
1
count(*)과 AS가 사용가능한절 TOP EARNERS문제
0
250
2

