-
SQLD 자격검증실전문제 100번 문제<자격증>/[SQLD] 2023. 3. 21. 13:46728x90
100번. 다음 중 아래 SQL에 대한 설명으로 가장 부적절한 것은?
[SQL]SELECT B. 사원번호, B. 사원명, A. 부서번호, A. 부서명 ,(SELECT COUNT(*) FROM 부양가족 Y WHERE Y. 사원번호= B. 사원번호) AS 부양가족수 FROM 부서 A, (SELECT * FROM 사원 WHERE 입사년도= '2014') B WHERE A. 부서번호 = B. 부서번호 AND EXISTS (SELECT 1 FROM 사원 X WHERE X. 부서번호= A. 부서번호);
1 위 SQL에는 다중 행 연관 서브쿼리, 단일 행 연관 서브쿼리, Inline View 가 사용되었다.
2 SELECT절에 사용된 서브쿼리는 스칼라 서브쿼리라고도하며, 이러한 형태의 서브쿼리는 JOIN 으로 동일한 결과를 추출할 수도 있다.
3 WHERE절의 서브쿼리에 사원 테이블 검색 조건으로 입사년도 조건을 FROM절의 서브쿼리와 동일하게 추가해야 원하는 결과를 추출할 수 있다.
4 FROM 절의 서브쿼리는 동적 뷰(Dynamic View)라고도 하며, SQL 문장 중 테이블 명이 올 수 있는 곳에서 사용할 수 있다.[정답] 3번
[해설]
3번이 부적절한 설명입니다.
WHERE절의 서브쿼리에서 입사년도 조건을 추가했기 때문에, FROM절의 서브쿼리와 결과가 일치하지 않을 수 있습니다. 따라서 3번 설명은 잘못되었습니다.
일단 쿼리는 다음과 같은 기능을 수행합니다:
- 사원과 부서 테이블을 조인하여 부서번호, 부서명, 사원번호, 사원명을 가져옵니다.
- 해당 사원이 부양하는 가족의 수를 부양가족수 칼럼으로 가져옵니다. 이 때 부양가족 테이블에서 해당 사원번호와 매칭되는 레코드 수를 세어 가져옵니다.
- 입사년도가 2014년인 사원만 가져옵니다. 이는 서브쿼리를 통해 수행됩니다.
- 부서번호가 일치하는 사원만을 가져오기 위해 EXISTS 연산자를 사용합니다.
코드는 다소 더러워 보이지만, 중첩된 SELECT 문과 EXISTS 연산자를 사용하여 간단한 로직을 수행합니다. 내부 쿼리는 각각 사원의 부양가족 수를 계산하고, 해당 부서에 사원이 존재하는지 확인하는 것입니다. 결과적으로는 입사년도가 2014년이고, 해당 부서에 속한 사원들의 정보와 해당 사원이 부양하는 가족의 수가 함께 출력됩니다.
728x90728x90'<자격증> > [SQLD]' 카테고리의 다른 글
SQLD 자격검증실전문제 98번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 99번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 101번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 102번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 103번 문제 (0) 2023.03.20