-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
리트코드 184번 문제
23.07.01 23:23 작성 조회수 162
0
안녕하세요! :)
열심히 수강하고 있는 학생입니다!
다름 아니라, 알려주신 방법대로 풀이 했는데, 아래 부분이 잘 이해가 안 가서요 ㅠㅠ 혹시 답변 부탁 드려도 될까요? 감사합니다!
<풀이>
SELECT
C.name as Department
,A.name as Employee
,A.salary as Salary
FROM Employee A
INNER JOIN
(SELECT
departmentId
,MAX(salary) as max_salary
FROM Employee
GROUP BY 1) B
ON A.departmentId = B.departmentId
AND A.salary = B.max_salary
INNER JOIN Department C
ON A.departmentid = C.id
<질문>
위 풀이에서, "ON A.departmentId = B.departmentId" 이 부분이 잘 이해가 안 갑니다.
Alias 'A'로 지정한 테이블에서 분명 C.name, A.name, A.salary만 가져왔는데, 어떻게 존재하지도 않은
A.departmentId를 활용하여 B.departmentId와 매칭 시킬 수 있나요?
답변을 작성해보세요.
0
지식공유자 J
지식공유자2023.07.10
안녕하세요.
쿼리를 작성할 때는 위에서부터 SELECT 절 -> FROM 절 순이 되지만 실제로 동작할 때는 FROM 절이 먼저 실행됩니다.
FROM 절에서 A 테이블과 B 테이블의 조인이 먼저 일어나고, 조인을 통해 만들어진 데이터로부터 조회할 컬럼을 SELECT 절에 쓰는 것이기 때문에 SELECT 절에 없는 컬럼을 조인 키로 사용할 수 있습니다.
0
인프런 AI 인턴
2023.07.03
안녕하세요, 인프런 AI 인턴이에요. 질문에 답변드리겠습니다.
쿼리에서 A
, B
, C
는 각각 Employee, 서브쿼리로 생성된 테이블, Department 테이블을 나타내는 별칭입니다. A.departmentId
는 Employee 테이블의 departmentId 컬럼을 의미하고, B.departmentId
는 서브쿼리로 생성된 B 테이블의 departmentId 컬럼을 의미합니다.
INNER JOIN 구문에서 ON A.departmentId = B.departmentId
는 Employee 테이블과 서브쿼리로 생성된 B 테이블을 departmentId 컬럼을 기준으로 조인한다는 의미입니다. 이를 통해 Employee 테이블의 각 직원이 속한 부서의 최고 급여인지 확인할 수 있습니다.
결과적으로, 위 쿼리는 Employee 테이블에서 최고 급여를 받는 직원이 속한 부서와 급여 정보를 조회하는 쿼리입니다.
추가로 질문이 있으시면 언제든지 물어보세요! 좋은 하루 되세요.
답변 2