AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

SQLD/2과목 : SQL 기본 및 활용

2.8 복합 쿼리 예제 1

qordnswnd123 2025. 7. 3. 09:30

🧠 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