<자격증>/[SQLD]
SQLD 자격검증실전문제 101번 문제
9566
2023. 3. 21. 13:30
728x90
101번. 아래와 같은 데이터 모델에서 평가대상상품에 대한 품질평가항목별 최종 평가 결과를 추출하는 SQL 문장으로 옳은 것은?(단, 평가항목에 대한 평가(평가등급)가 기대수준에 미치지 못할 경우 해당 평가항목에 대해서만 재평가를 수행 한다)
1
SELECT B. 상품ID, B. 상품명, C. 평가항목ID, C. 평가항목명, A. 평가회차.
A. 평가등급, A. 평가일자
FROM 평가결과 A, 평가대상상품 B, 품질평가항목 C.
(SELECT MAX(평가회차) AS 평가회차 FROM 평가결과) D
WHERE A. 상품ID= B. 상품ID
AND A. 평가항목ID = C. 평가항목ID
AND A. 평가회차= D. 평가회차:
2
SELECT B. 상품ID, B. 상품명, C. 평가항목ID, C. 평가항목명, A. 평가회차,
A. 평가등급, A. 평가일자
FROM 평가결과 A. 평가대상상품 B. 품질평가항목 C
WHERE A. 상품ID = B. 상품ID
AND A. 평가항목ID = C. 평가항목ID
AND A. 평가회차 = (SELECT MAX(X. 평가회차)
FROM 평가결과 X
WHERE X. 상품ID= B. 상품ID
AND X. 평가항목ID = C. 평가항목ID);
[정답] 2번
[해설]
이 SQL 쿼리는 평가결과 테이블에서 최신 평가회차의 평가결과를 가져오는 것입니다.
- SELECT 구문에서는 평가결과를 구성하는 여러 테이블을 조인합니다.
- FROM 구문에서는 평가결과 테이블을 A로, 평가대상상품 테이블을 B로, 품질평가항목 테이블을 C로 지정합니다.
- WHERE 구문에서는 A.상품ID와 B.상품ID가 같고, A.평가항목ID와 C.평가항목ID가 같아야 합니다. 또한 A.평가회차는 서브쿼리로 가져온 최신 평가회차와 같아야 합니다.
- 서브쿼리에서는 최신 평가회차를 가져옵니다. FROM 구문에서는 평가결과 테이블을 X로 지정하고, WHERE 구문에서는 상품ID와 평가항목ID가 같고, 평가회차가 최대인 값을 가져옵니다.
즉, 이 SQL 쿼리는 각 상품 및 평가항목별로 최신 평가결과를 가져오는 것입니다.
728x90
[복습]
728x90