본문 바로가기
02_STUDY/SQLD

SQL 자격검정 실전문제 풀이 해설 노랭이 97번, 98번(P.101,102)

by zestlumen 2023. 3. 30.

2021-11-28 18:57:55

 

SQL 자격검정 실전문제 풀이 해설 노랭이 97번

SQL문은 약관항목 중 단 하나라도 동의여부 N인 회원, 회원명 구하는 것

 

②동의 항목 테이블에서 동의여부 N인 행만 뽑고,

회원번호만 필요해서 회원번호만 출력

 

③동의여부가 N개인 데이터 0개 초과하면 조건

즉, 회원번호 회원명 별로 나누지 않아 동의 여부가 N인 모든 데이터 개수를 불러와버림.

정상 수행 위해 회원번호 회원명 별로 개수 구한다는 조건 추가 필요,

테이블 간 회원 번호 칼럼으로 연관 서브 쿼리 처리돼야 함

- 서브쿼리 내 두 테이블 회원번호 칼럼 연관시키기

- 서브쿼리내 WHERE 조건문에 B.회원번호 = A.회원번호 추가

 

 

SQL 자격검정 실전문제 풀이 해설 노랭이 98번

SQL문

이벤트 시작일자가 '2014.10.01'과 같거나 큰 이벤트 기준

단 한차례라도 이메일 발송 누락된 회원 추출

 

ㄷ.비연관 서브쿼리

 

-HAVING절 COUNT(*)는 해당 회원ID 1명에 대한 메일발송건수. 

메인의 A. 회원ID가 서브쿼리 조건으로 들어옴.

메인 결과리스트 각 건건마다 서브쿼리 개별 수행됨.

매 건건마다, 즉, 각 회원마다 메일 발송건수 체크함

메인 : 회원 

서브1 : 회원에 해당하는 이벤트 메일 건수

서브2 : 이벤트 건수

 

-이벤트 B와 메일발송 C의 관계는 1:M 관계로 메일발송이

B테이블보다 클 수 있음을 이해, 그 이후 쿼리 실행순서 알아보기

FROM 이벤트 B와 메일발송 C를 받아오고 WHERE 이벤트 시작일자 2014.10.01보다 크거나 같고

이벤트 아이디 메일발송 아이디 같으면 회원 아이디와 메일발송 아이디가 같은 

SELECT 'X'에서 HAVING이 시작됨

그러면 우리 WHERE절은 2014.10.01 이후 시작된 이벤트에서 발송된 회원별 메일 발송 수

그 전체개수가 < 이벤트로부터 개수 ▶이메일 발송 누락

 

②회원별 메일발송 건수 계산 X  원하는 결과 X

④GROUP BY 및 집계함수를 사용하지 않고 HAVING 절을 사용했다고 해서

SQL이 실행되지 못하고 오류가 발생하지는 않는다.