-
SQLD 자격검증실전문제 102번 문제<자격증>/[SQLD] 2023. 3. 21. 13:19728x90
102번. 아래 부서 테이블의 담당자 변경을 위해 부서임시 테이블에 입력된 데이터를 활용하여 주기적으로 부서 테이블을 아래 결과와 같이 반영하기 위한 SQ으로 가장 적절한 것은?(단, 부서임시 테이블에서 변경일자를 기준으로 가장 최근에 변경된 데이터를 기준으로 부서 테이블에 반영되어야 한다)[테이블: 부서]
[테이블: 부서임시]
[결과]1 UPDATE 부서 A SET 담당자 = (SELECT C. 부서코드 FROM (SELECT 부서코드, MAX(변경일자) AS 변경일자 FROM 부서임시 GROUP BY 부서코드) B, 부서임시 C WHERE B. 부서코드=C. 부서코드 AND B. 변경일자 = C. 변경일자 AND A. 부서코드 = C. 부서코드)
2 UPDATE 부서 A SET 담당자 = (SELECT C. 부서코드 FROM (SELECT 부서코드, MAX(변경일자) AS 변경일자 FROM 부서임시 GROUP BY 부서코드) B, 부서임시 C WHERE B. 부서코드 = C. 부서코드 AND B. 변경일자 = C. 변경일자 AND A. 부서코드 = C. 부서코드) WHERE EXISTS (SELECT 1 FROM 부서 X WHERE A. 부서코드= X. 부서코드):
3 UPDATE 부서 A SET 담당자 = (SELECT B. 담당자 FROM 부서임시 B WHERE B. 부서코드 = A. 부서코드 AND B. 변경일자 = (SELECT MAX(C. 변경일자) FROM 부서임시 C WHERE C. 부서코드 = B. 부서코드)) WHERE 부서코드 IN (SELECT 부서코드 FROM 부서임시);
4 UPDATE 부서 A SET 담당자 = (SELECT B. 담당자 FROM 부서임시 B WHERE B. 부서코드 = A.부서코드 AND B. 변경일자= '2015.01.25.');
[정답] 3번
[해설]
- 서브쿼리를 사용하여 부서임시 테이블에서 최신 변경일자에 해당하는 담당자 정보를 조회합니다.
- B. 부서코드 = A. 부서코드: 부서 테이블과 부서임시 테이블을 부서코드 기준으로 조인합니다.
- B. 변경일자 = (SELECT MAX(C. 변경일자) FROM 부서임시 C WHERE C. 부서코드 = B. 부서코드): 부서코드별로 가장 최근 변경일자를 조회합니다.
- 메인쿼리에서 부서임시 테이블에 존재하는 부서코드를 참조하여 해당 부서의 담당자 정보를 업데이트합니다.
따라서, 위 SQL문은 부서 테이블의 담당자 정보를 부서임시 테이블의 최신 정보로 업데이트하는 역할을 수행합니다.
728x90728x90'<자격증> > [SQLD]' 카테고리의 다른 글
SQLD 자격검증실전문제 100번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 101번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 103번 문제 (0) 2023.03.20 SQLD 자격검증실전문제 104번 문제 (0) 2023.03.20 SQLD 자격검증실전문제 105번 문제 (0) 2023.03.20 - 서브쿼리를 사용하여 부서임시 테이블에서 최신 변경일자에 해당하는 담당자 정보를 조회합니다.