
SQLD SQL 결과 추론 요령 총정리, 논리 처리 순서·조인 행 수·OUTER JOIN·서브쿼리 오류·집합 연산자·그룹 함수·윈도우 함수·Top-N·계층형 질의 함정 체크리스트
2과목 SQL 결과 문제를 빠르게 푸는 요령을 한 번에 모아볼게
문제를 보자마자 어디부터 확인해야 하는지 체크리스트로 정리했어
SQLD 기초이론 정리 시리즈 49탄!!!
과목 : 마무리 총정리
세부 영역 : SQL 결과 추론 요령 (이론 15 ~ 40 복습)
1. 결과 문제 푸는 4단계
| 단계 | 확인할 것 |
| 1. 처리 순서 | FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY (이론 15) |
| 2. NULL 표시 | NULL이 있는 행에 먼저 체크 (이론 48) |
| 3. 행 수 계산 | 조인 · 그룹 · 집합 연산 결과 행 수부터 세기 |
| 4. 오류 여부 | 별칭 위치, 단일행 서브쿼리, 칼럼 수 불일치 먼저 확인 |
2. 주제별 함정 체크리스트
| 주제 | 자주 나오는 함정 | 복습 |
| 별칭 | WHERE · GROUP BY · HAVING에서 SELECT 별칭 사용 → 오류 | 이론 15 |
| GROUP BY | SELECT에 그룹 칼럼 · 집계 함수 아닌 칼럼 → 오류 | 이론 22 |
| 조인 | 조인 조건 없으면 카티션 곱, NATURAL JOIN은 같은 이름 칼럼 전부 비교 | 이론 24 · 25 |
| OUTER JOIN | WHERE에 오른쪽 조건 → INNER처럼, ON에 왼쪽 조건 → 왼쪽 행 못 거름 | 이론 27 |
| 서브쿼리 | = 에 여러 행 반환 → 오류, NOT IN + NULL → 0행 | 이론 29 · 30 |
| 집합 연산자 | 칼럼 수 · 타입 일치, 칼럼명은 첫 SELECT, ORDER BY는 맨 끝 | 이론 32 |
| 그룹 함수 | ROLLUP은 순서 중요, 소계 NULL은 GROUPING으로 구분 | 이론 33 |
| 윈도우 함수 | ORDER BY 있으면 기본 프레임 RANGE ~ CURRENT ROW, LAST_VALUE 함정 | 이론 35 · 36 |
| Top-N | ROWNUM이 ORDER BY보다 먼저, ROWNUM = 2는 0행 | 이론 37 |
| 계층형 | PRIOR 자식 = 부모면 순방향, CONNECT BY 조건은 가지째 제외 | 이론 38 |
3. 오늘 사용할 예시 테이블
| 사번 | 이름 | 부서 | 급여 | 상사 |
| 1 | 하나 | A | 500 | NULL |
| 2 | 두리 | A | 300 | 1 |
| 3 | 세찬 | B | 400 | 1 |
| 4 | 네오 | B | 400 | 3 |
| 5 | 다섯 | NULL | 200 | 3 |
▲ EMP_Z
4. 한 테이블로 여러 함정 확인하기
| SQL | 결과 | 함정 포인트 |
| SELECT 부서, COUNT(*) FROM EMP_Z GROUP BY 부서 | 3행 (A, B, NULL) | NULL도 하나의 그룹 |
| WHERE 부서 <> 'A' | 세찬, 네오 | 부서 NULL인 다섯은 UNKNOWN → 제외 |
| RANK() OVER (ORDER BY 급여 DESC) | 1, 2, 2, 4, 5 | 동점 뒤 순위 건너뜀 |
| DENSE_RANK() OVER (ORDER BY 급여 DESC) | 1, 2, 2, 3, 4 | 동점 뒤 순위 연속 |
| GROUP BY ROLLUP(부서) | 4행 (A, B, NULL 부서, 총합계) | NULL 부서 행과 총합계 행 모두 부서가 NULL |
| START WITH 상사 IS NULL CONNECT BY PRIOR 사번 = 상사 | LEVEL 1 하나 · 2 두리 · 세찬 · 3 네오 · 다섯 | 순방향 전개 |
5. 시간 줄이는 요령
| 요령 | 설명 |
| 보기 먼저 훑기 | 결과 행 수만 다르면 행 수만 세면 끝 |
| 오류 보기부터 제거 | 별칭 · 서브쿼리 · 칼럼 수 오류는 바로 지울 수 있어 |
| 표 옆에 메모 | 조인 · 그룹 결과는 손으로 작은 표를 그려서 세기 |
| NULL은 따로 표시 | NULL 행만 다시 보면 실수가 확 줄어 |
[ 최근 기출 출제 포인트 ]
| 회차 | 결과 추론 출제 경향 |
| 60회 | OUTER JOIN · ROLLUP · 윈도우 함수 결과 |
| 61회 | 상관 서브쿼리 · 계층형 질의 · 처리 순서 |
| 62회 | NOT IN + NULL · Top-N · 집합 연산자 결과 |
[ 자주 묻는 질문 ]
Q. SQL 결과 문제가 너무 오래 걸려
A. 처음부터 끝까지 다 계산하지 말고, 보기끼리 다른 부분만 확인해. 대부분 행 수나 한두 개 값만 다르게 나와
Q. 어떤 주제부터 복습할까?
A. 조인 · 서브쿼리 · 윈도우 함수 · 그룹 함수가 2과목에서 가장 많이 나와. 이 네 주제를 먼저 다시 봐
[ 시험 포인트 정리 ]
| 키워드 | 핵심 |
| 처리 순서 | 프 · 웨 · 그 · 해 · 셀 · 오 |
| NULL | 비교에서 빠지고 그룹에서는 묶임 |
| 행 수 | 조인 · 그룹 · 집합 연산부터 |
| 오류 | 별칭 위치 · 단일행 서브쿼리 · 칼럼 수 |
| 순위 | RANK 건너뜀, DENSE_RANK 연속 |
[ 기출변형문제 ]
※ 60~62회 출제 포인트와 출제기준을 바탕으로 새로 만든 변형문제야
(위의 EMP_Z 테이블 기준)
Q1. SELECT 부서, COUNT(*) FROM EMP_Z GROUP BY 부서; 의 결과 행 수는?
① 2행
② 3행
③ 5행
④ 1행
Q2. SELECT 이름 FROM EMP_Z WHERE 부서 <> 'A'; 의 결과 행 수는?
① 3행
② 1행
③ 2행
④ 0행
Q3. RANK() OVER (ORDER BY 급여 DESC)에서 다섯의 순위는?
① 4
② 3
③ 6
④ 5
Q4. START WITH 상사 IS NULL CONNECT BY PRIOR 사번 = 상사 로 전개할 때 LEVEL이 3인 사원 수는?
① 2명
② 3명
③ 1명
④ 5명
Q5. SELECT 부서, SUM(급여) FROM EMP_Z GROUP BY ROLLUP(부서); 의 결과 행 수는?
① 3행
② 4행
③ 5행
④ 6행
[ 정답 & 해설 ]
| 문항 | 정답 및 해설 |
| Q1 | ② A, B와 NULL 그룹 → 3행 |
| Q2 | ③ 세찬, 네오만. 다섯은 부서 NULL이라 UNKNOWN으로 제외 |
| Q3 | ④ 500 → 400 · 400(공동 2위) → 300(4위) → 200(5위) |
| Q4 | ① 하나(1) → 두리 · 세찬(2) → 네오 · 다섯(3) → 2명 |
| Q5 | ② A 800, B 800, NULL 부서 200, 총합계 1800 → 4행 |
다음 글이 드디어 시리즈 마지막!
[이론 50] 최종 모의고사와 합격 전략
으로 SQLD 기초이론을 마무리할게!
▶ SQLD · AI 자격증 스터디 자료 보러가기 (AI DATA 자격증 스터디 클럽)
SQLD 준비하시는 분들 모두 화이팅입니다~~~~~ ^^