이 모의고사는 실제 기출문제를 그대로 옮긴 것이 아닙니다. 공개된 회차의 출제 범위·문항 형식·오답 구성 방식을 분석해, 테이블·컬럼명·숫자를 모두 새로 바꿔 재구성한 문항입니다. 권장 풀이 시간은 90분입니다(실제 SQLD 시험 시간과 동일하게 맞췄습니다). 이 회차는 SQL 실행 결과 예측형 문항 비중을 높였고, 특히 NULL이 섞인 집계, NOT IN, OUTER JOIN의 행 수, RANK와 DENSE_RANK의 혼동, ROWNUM 필터, UNION과 UNION ALL의 행 수 차이, HAVING과 WHERE의 혼동이라는 여섯 가지 함정 패턴을 오답 선택지에 의도적으로 재현했습니다. 각 오답이 어떤 착각의 결과인지 해설에서 반드시 확인하십시오.
실제 SQLD는 1과목 데이터 모델링 10문항(20점), 2과목 SQL 기본 및 활용 40문항(80점), 총 100점 만점이며 과목별 40퍼센트(40%) 미만이면 과락으로 총점과 무관하게 불합격합니다. 이 회차는 온라인 쇼핑몰(고객·주문·상품·리뷰)을 소재로 삼아, 테이블과 SQL을 먼저 코드블록으로 제시하고 바로 아래에 문제를 배치하는 방식으로 구성했습니다. 표와 SQL을 직접 손으로 따라가며 결과를 먼저 예측한 뒤 보기를 확인하십시오.
문항 배분
| 영역 | 문항 수 | 문항 번호 | 배점 |
|---|---|---|---|
| 데이터 모델링(엔터티·식별자·정규화·NULL·DCL) | 10 | 1–10 | 20점 |
| SQL 기본과 HAVING·WHERE 함정 | 10 | 11–20 | 20점 |
| 조인과 NULL 관련 함정(NOT IN·OUTER JOIN) | 10 | 21–30 | 20점 |
| 집합연산자·윈도우 함수·ROWNUM·GROUPING SETS·계층형 질의·DCL | 10 | 31–40 | 20점 |
| DBMS 차이와 복합 실행 결과 예측 | 10 | 41–50 | 20점 |
| 합계 | 50 | 1–50 | 100점 |
데이터 모델링 (1–10번)
SQL 기본과 HAVING·WHERE 함정 (11–20번)
INSERT INTO 상품 (상품ID, 상품명) VALUES (1, '텀블러');SELECT 상품명 FROM 상품 WHERE 상품명 LIKE '%컵%';SELECT NVL2(배송완료일, '배송완료', '배송중') AS 상태
FROM 주문
WHERE 주문ID = 1001;[주문] 테이블에 주문ID 1, 2, 3, 4가 있고, 쿠폰ID 컬럼 값은 각각 10, NULL, 20, NULL이다.
SELECT COUNT(*) AS 전체, COUNT(쿠폰ID) AS 쿠폰사용
FROM 주문;[리뷰] 테이블의 평점 컬럼에는 5, NULL, 3, 4 네 개의 행이 있다.
SELECT AVG(평점) AS 평균, SUM(평점) / COUNT(*) AS 평균2
FROM 리뷰;[주문] 테이블의 배송방법 컬럼 값은 순서대로 일반, 일반, 새벽, NULL이다.
SELECT 배송방법, COUNT(*) FROM 주문 GROUP BY 배송방법;[주문] 테이블의 카테고리와 금액은 순서대로 가전 50만원, 가전 10만원, 의류 3만원, 의류 2만원, 도서 1만원이다.
SELECT 카테고리, COUNT(*) AS 건수
FROM 주문
WHERE 금액 >= 50000
GROUP BY 카테고리
HAVING COUNT(*) >= 2;조인과 NULL 관련 함정 (21–30번)
[고객] 테이블에는 고객ID 1, 2, 3이 있다. [주문] 테이블에는 주문ID 101(고객ID 1), 102(고객ID 1), 103(고객ID 2), 104(고객ID 9, 고객 테이블에 존재하지 않는 값)가 있다. 고객ID 3은 주문이 하나도 없다.
SELECT C.고객ID, O.주문ID
FROM 고객 C
JOIN 주문 O ON C.고객ID = O.고객ID;SELECT C.고객ID, O.주문ID
FROM 고객 C
LEFT OUTER JOIN 주문 O ON C.고객ID = O.고객ID;SELECT C.고객ID, O.주문ID
FROM 고객 C
RIGHT OUTER JOIN 주문 O ON C.고객ID = O.고객ID;SELECT C.고객ID, O.주문ID
FROM 고객 C
FULL OUTER JOIN 주문 O ON C.고객ID = O.고객ID;[고객] 테이블에는 고객ID 1, 2, 3이 있다. [블랙리스트] 테이블의 고객ID 컬럼에는 2와 NULL이 들어 있다.
SELECT 고객ID FROM 고객
WHERE 고객ID NOT IN (SELECT 고객ID FROM 블랙리스트);SELECT 고객ID FROM 고객 C
WHERE NOT EXISTS (
SELECT 1 FROM 블랙리스트 B WHERE B.고객ID = C.고객ID
);[상품] 테이블은 상품ID 1(카테고리 가전), 2(카테고리 의류), 3(카테고리 가전), 4(카테고리 도서)로 구성된다.
SELECT 상품ID FROM 상품
WHERE 카테고리 IN (SELECT 카테고리 FROM 상품 WHERE 상품ID = 1);[A] 테이블의 고객ID 컬럼에는 1, 2, 3이 있다. [B] 테이블의 고객ID 컬럼에는 2, 3, 4가 있다.
SELECT 고객ID FROM A
UNION
SELECT 고객ID FROM B;집합연산자·윈도우 함수·ROWNUM·GROUPING SETS·계층형 질의·DCL (31–40번)
[성적] 테이블은 김(90점), 이(90점), 박(80점), 최(70점) 네 학생으로 구성된다.
SELECT 학생, 점수,
RANK() OVER (ORDER BY 점수 DESC) AS R,
DENSE_RANK() OVER (ORDER BY 점수 DESC) AS DR
FROM 성적;[상품] 테이블에는 상품ID 1, 2, 3, 4가 이 순서로 저장되어 있다.
SELECT * FROM 상품 WHERE ROWNUM > 1;[방문자] 테이블은 1일 100명, 2일 80명, 3일 120명이 방문했다.
SELECT 일자, AVG(방문수) OVER (ORDER BY 일자 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS 이동평균
FROM 방문자;[매출3] 테이블은 가전 카테고리에 100, 의류 카테고리에 200이 있다.
SELECT 카테고리, SUM(금액) FROM 매출3 GROUP BY GROUPING SETS(카테고리, ());DBMS 차이와 복합 실행 결과 예측 (41–50번)
[주문] 테이블에는 주문ID 1(상태코드 P), 2(상태코드 C), 3(상태코드 X)가 있다.
SELECT 주문ID,
CASE 상태코드
WHEN 'P' THEN '준비중'
WHEN 'C' THEN '완료'
ELSE '기타'
END AS 상태명
FROM 주문;SELECT 고객ID, 이름 FROM 고객
UNION
SELECT 상품ID FROM 상품;[고객] 테이블은 고객ID 1(이름 김), 2(이름 이)로 구성된다. [주문] 테이블에는 고객ID 1인 주문이 3건 있고, 고객ID 2인 주문은 없다.
SELECT 고객ID, 이름,
(SELECT COUNT(*) FROM 주문 O WHERE O.고객ID = C.고객ID) AS 주문건수
FROM 고객 C;[주문] 테이블에는 주문ID 1(고객ID 1, 금액 1000), 2(고객ID 1, 금액 NULL), 3(고객ID 2, 금액 2000)이 있다.
SELECT 고객ID, COUNT(*) AS 건수, SUM(금액) AS 합계
FROM 주문
GROUP BY 고객ID
HAVING SUM(금액) > 500;채점 후 복습 동선
50문항을 모두 푼 뒤 아래 표로 틀린 문항 번호대를 확인하고, 해당 범위에서 5문항 이상 틀렸다면 지정된 편으로 돌아가 개념부터 다시 확인하십시오.
| 틀린 문항 범위 | 다루는 개념 | 복습할 편 |
|---|---|---|
| 1–10 | 엔터티·속성·정규화·NULL·DCL 개념 | 03–09편 |
| 11–20 | DDL·DML·TCL·WHERE·함수·NULL 집계·HAVING과 WHERE 차이 | 09–15편 |
| 21–30 | 조인 종류별 행 수·NOT IN과 NOT EXISTS·집합 연산자 | 16–18편 |
| 31–40 | RANK 계열·ROWNUM·GROUPING SETS·계층형 질의·DCL | 19–24편 |
| 41–50 | 절차형 SQL 개요·DBMS 문법 차이·PIVOT·CASE WHEN | 23–25편 |
합격 기준 안내
SQLD는 데이터 모델링 10문항(20점)과 SQL 기본 및 활용 40문항(80점), 총 100점 만점이며 두 조건을 동시에 만족해야 합격합니다.
- 과락 방지: 데이터 모델링에서 4문항(8점) 미만, SQL에서 16문항(32점) 미만으로 맞히면 과목별 40퍼센트(40%) 기준 미달로 과락 처리되어 총점과 무관하게 불합격합니다.
- 평균 합격선: 두 과목 점수를 합쳐 60점(전체 30문항) 이상이어야 합니다.
이 회차는 특히 NULL과 관련된 함정(21–30번, 50번)에서 반복적으로 틀렸다면, NULL이 비교·집계·조건절에서 어떻게 다르게 동작하는지부터 09편에서 다시 짚고 16–18편의 조인·서브쿼리 예제를 손으로 직접 다시 그려보십시오.