🧠 2.8 복합 쿼리 예제 ① (셀렉트 종합문제)
✅ 학습 목표
- SQL 실행 순서를 이해하고 암기한다.
- 날짜 필터링, 집계, 그룹 조건, 정렬 등 복합 SQL 요소들을 통합적으로 처리하는 방법을 숙지한다.
- SQL 문법의 개념적 의미와 실행 흐름을 함께 이해하여 문제 해결 능력을 높인다.
🧾 문제 개요
문제 요약:
회원들의 주문 데이터를 분석하여 다음을 수행하는 SQL을 작성하라.
- 2024년 3월 1일 ~ 15일 사이 주문만 필터링
- 회원번호별 주문 건수가 2건 이상인 경우만 필터링
- 회원별 최고 주문금액과 주문금액 합계를 구함
- 주문금액 합계 기준으로 내림차순 정렬
🔄 SQL 실행 순서 (시험 단골)
SQL 문은 작성 순서가 아닌 실행 순서대로 동작함:

📌 핵심 SQL 문
SELECT 회원번호,
MAX(주문금액) AS 최고금액,
SUM(주문금액) AS 금액합계
FROM TBL_ORDER
WHERE 주문일시 BETWEEN '20240301' AND '20240315'
GROUP BY 회원번호
HAVING COUNT(*) >= 2
ORDER BY 금액합계 DESC;
🧠 주요 키포인트 해설
🔹 1. WHERE + BETWEEN으로 날짜 필터링
- BETWEEN '20240301' AND '20240315'
- 문자열 날짜라 해도 아스키값 기준으로 대소 비교가 가능
- 문자형 날짜는 반드시 정렬 가능한 형식(YYYYMMDD)으로 저장해야 제대로 작동
🔍 시험 포인트:
SQLD 시험에서는 BETWEEN, LIKE, IN 등 필터링 조건의 내부 동작 원리를 자주 묻는다.
🔹 2. GROUP BY + HAVING으로 그룹 조건 처리
- GROUP BY 회원번호 → 회원별로 집계
- HAVING COUNT(*) >= 2 → 주문 건수가 2건 이상인 그룹만 추출
❗ HAVING은 집계 함수가 있는 그룹 조건만 필터링 가능
❗ WHERE과의 차이를 명확히 구분해야 시험에서 틀리지 않음
🔹 3. 집계 함수 MAX, SUM
- MAX(주문금액) → 회원별 최대 주문금액
- SUM(주문금액) → 회원별 총 주문금액
중요: GROUP BY가 있으면 집계 함수는 그룹 단위로 계산
📝 SQLD 시험에서는 집계 함수와 그룹 처리 방식, 집계 함수끼리의 차이점이 자주 나옴
🔹 4. ORDER BY로 정렬
- ORDER BY 금액합계 DESC → 내림차순 정렬
- 생략 시 기본값은 오름차순(ASC)
🧩 참고: ORDER BY는 전체 쿼리 마지막에 수행되는 절
🧠 SQLD 시험 자주 출제 개념 정리

📚 SQLD 시험 대비 예제 문제화
Q1. 아래 SQL에서 잘못된 설명은?
SELECT 부서, SUM(급여)
FROM 직원
GROUP BY 부서
HAVING COUNT(*) > 3
ORDER BY SUM(급여) DESC;
a. 집계함수 SUM은 그룹 내 합계를 나타낸다
b. HAVING은 행 조건 필터링이다 ❌
c. GROUP BY는 부서별로 묶는다
d. ORDER BY는 최종 정렬이다
→ 정답: b (행 조건 필터는 WHERE)
✅ 마무리 요약
- 본 예제는 SELECT 문 전체 구조와 실행 순서를 실전형으로 익힐 수 있는 최적 사례
- SQLD 시험에서는 구조별 이해, 집계 함수 해석, 문자형 필터링, 정렬 방식 등 문법에 대한 정확한 개념과 실행 순서 암기가 매우 중요
- 복합 문제는 단일 절만 이해해서는 해결 불가 → 절 간 관계 및 순서 흐름을 통합적으로 익혀야 함
'SQLD > 2과목 : SQL 기본 및 활용' 카테고리의 다른 글
2.10 서브쿼리 (0) | 2025.07.03 |
---|---|
2.9 복합 쿼리 예제 2 (2) | 2025.07.03 |
2.7 JOIN문 (2) | 2025.06.24 |
2.6 GROUP BY 절 (0) | 2025.06.24 |
2.5 WHERE 절 (1) | 2025.06.24 |