-
SQLD 자격검증실전문제 117번 문제<자격증>/[SQLD] 2023. 3. 19. 17:24728x90
117.
[SQL] SELECT Y. 사원ID, Y. 부서ID, Y. 사원명, Y. 연봉 FROM (SELECT 사원ID, MAX(연봉) OVER(PARTITION BY 부서ID) AS 최고연봉 FROM 사원) X, 사원 Y WHERE X.사원ID=Y. 사원ID AND X. 최고연봉 = Y. 연봉
위 SQL은 각 부서별로 최고 연봉을 받는 사원의 정보를 조회하는 쿼리입니다.
먼저, 사원 테이블에서 각 부서별로 최고 연봉을 구하기 위해 서브쿼리를 사용합니다. 이 서브쿼리는 사원 테이블을 사원ID로 그룹화하고, 각 부서별로 MAX(연봉)을 구하는 OVER 절을 사용합니다. PARTITION BY 구문으로 부서별로 구분합니다.
그리고, 이 서브쿼리의 결과를 X라는 임시 테이블로 만들어 놓습니다. 이후, 사원 테이블과 X 테이블을 조인합니다. 이때, X 테이블과 조인되는 컬럼은 사원ID와 최고연봉입니다. 따라서, X.사원ID=Y.사원ID와 X.최고연봉=Y.연봉 조건을 추가합니다.
마지막으로, SELECT 문으로 사원ID, 부서ID, 사원명, 연봉 컬럼을 출력합니다. 이때, 출력할 컬럼에 Y.을 붙이는 이유는, X 테이블과 Y 테이블이 모두 사원 테이블이기 때문에, 컬럼명이 중복되지 않도록 하기 위함입니다.
728x90728x90'<자격증> > [SQLD]' 카테고리의 다른 글
SQLD 자격검증실전문제 115번 문제 (0) 2023.03.19 SQLD 자격검증실전문제 116번 문제 (0) 2023.03.19 SQLD 자격검증실전문제 146번 문제 (0) 2023.03.19 SQLD 자격검증실전문제 143번 문제 (0) 2023.03.19 SQLD 자격검증실전문제 138번 문제 (0) 2023.03.19