<자격증>/[SQLD]

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

9566 2023. 3. 21. 14:08
728x90

 



98번. 아래의 데이터 모델을 기준으로 SQL을 작성하였다. 다음 중 아래의 SQL에 대해 가장 바르게 설명한 것은?

[SQL]

SELECT A. 회원ID, A. 회원명. A. 이메일
FROM 회원 A
ㄱ
WHERE EXISTS (SELECT 'X'
		FROM 이벤트 B, 메일발송 C 
              WHERE B. 시작일자>= '2014.10.01' 
              AND B. 이벤트ID= C.이벤트ID
ㄴ
AND A. 회원ID=C. 회원ID
ㄷ
HAVING COUNT(*) <(SELECT COUNT(*)
FROM 이벤트
WHERE 시작일자>=
2014.10.01')):


1 이벤트 시작일자가 2014.10.01'과 같거나 큰 이벤트를 대상으로 이메일이 발송된 기록이 있는 모든 회원을 추출하는 SQL이다.
2 ᄂ을 제거하고 ᄀ의 EXISTS 연산자를 IN연산자로 변경해도 결과는 동일하다. 
3 ᄃ은 이벤트 시작일자가 2014.10.01'과 같거나 큰 이벤트건수와 그 이벤트들을 기준으로 회원별 이메일 발송건수를 비교하는 것이다.
4 GROUP BY 및 집계함수를 사용하지 않고 HAVING절을 사용하였으므로 SQL이 실행되지 못하고 오류가 발생한다. 

[정답] 3번

[해설]

이벤트 시작일자가 2014.10.01 이후인 이벤트들을 대상으로 회원별로 이메일 발송 건수를 구한 뒤, 해당 건수가 이벤트 건수보다 작은 회원들의 정보를 추출하는 SQL입니다. GROUP BY 및 집계 함수 대신 HAVING 절을 사용하여 결과를 필터링하고 있습니다.

 

728x90