728x90


97번. 다음 중 아래의 ERD를 참조하여 아래 SQL과 동일한 결과를 출력하는 SQL로 가장 부적절한 것은?
[SQL]
SELECT A. 회원번호, A. 회원명
FROM 회원 A, 동의항목 B
WHERE A. 회원번호= B. 회원번호
GROUP BY A. 회원번호, A. 회원명
HAVING COUNT(CASE WHEN B. 동의여부= 'N' THENO ELSE
NULL END)>= 1
ORDER BY A. 회원번호;
보기
--1
SELECT A.회원번호, A.회원명
FROM 회원 A
WHERE EXISTS (SELECT 1 FROM 동의항목 B
WHERE A.회원번호= B.회원번호 AND
B.동의여부 = 'N')
ORDER BY A.회원번호
--2
SELECT A.회원번호, A.회원명
FROM 회원 A
WHERE A. 회원번호 IN (SELECT B.회원번호 FROM 동의항목 B
WHERE B. 동의여부 = 'N')
ORDER BY A. 회원번호:
--3
SELECT A. 회원번호, A. 회원명
FROM 회원 A
WHERE B. 동의여부= 'N')
WHERE 0 < (SELECT COUNT(*)
FROM 동의항목 B WHERE B. 동의여부= 'N')
ORDER BY A. 회원번호:
--4
SELECT A. 회원번호, A. 회원명
FROM 회원 A. 동의항목 B
WHERE A. 회원번호= B. 회원번호 AND B. 동의여부= 'N'
GROUP BY A. 회원번호, A. 회원명
ORDER BY A 회원번호:
[정답] 1번
[해설]
- 회원 테이블에서 회원번호와 회원명을 선택합니다.
- 동의항목 테이블에서 회원번호와 동의여부를 선택합니다.
- 회원 테이블의 각 행에 대해 하위 쿼리를 실행합니다. 하위 쿼리는 선택된 회원의 회원번호와 일치하고, 동의여부가 'N'인 동의항목이 존재하는지 확인합니다.
- 하위 쿼리의 결과가 참인 경우에만, 회원 테이블에서 선택된 회원번호와 회원명을 반환합니다.
- 회원번호를 기준으로 결과를 오름차순으로 정렬합니다.
즉, 이 쿼리는 동의항목에 동의하지 않은 회원들의 정보를 회원 테이블에서 선택하고, 회원번호를 기준으로 정렬하여 반환합니다.
[복습]

728x90
'<자격증> > [SQLD]' 카테고리의 다른 글
| SQLD 자격검증실전문제 95번 문제 (0) | 2023.03.21 |
|---|---|
| SQLD 자격검증실전문제 96번 문제 (0) | 2023.03.21 |
| SQLD 자격검증실전문제 98번 문제 (0) | 2023.03.21 |
| SQLD 자격검증실전문제 99번 문제 (0) | 2023.03.21 |
| SQLD 자격검증실전문제 100번 문제 (0) | 2023.03.21 |