<자격증>/[SQLD]

SQLD 자격검증실전문제 97번 문제

9566 2023. 3. 21. 16:23
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번

[해설]

  1. 회원 테이블에서 회원번호와 회원명을 선택합니다.
  2. 동의항목 테이블에서 회원번호와 동의여부를 선택합니다.
  3. 회원 테이블의 각 행에 대해 하위 쿼리를 실행합니다. 하위 쿼리는 선택된 회원의 회원번호와 일치하고, 동의여부가 'N'인 동의항목이 존재하는지 확인합니다.
  4. 하위 쿼리의 결과가 참인 경우에만, 회원 테이블에서 선택된 회원번호와 회원명을 반환합니다.
  5. 회원번호를 기준으로 결과를 오름차순으로 정렬합니다.

즉, 이 쿼리는 동의항목에 동의하지 않은 회원들의 정보를 회원 테이블에서 선택하고, 회원번호를 기준으로 정렬하여 반환합니다.

[복습]

 

728x90