SELECT문, UNION 실행 순서의 관계

dragonloly·2025년 2월 16일
0

SQL

목록 보기
13/19

✅ 1. SELECT 문 실행 순서

일반적인 SELECT 쿼리는 다음 순서로 실행
(실행되는 순서지, 작성하는 순서는 아님!)

🔹 실행 순서
1️⃣ FROM → 데이터를 가져올 테이블 지정
2️⃣ WHERE → 조건에 맞는 데이터 필터링
3️⃣ GROUP BY → 같은 값끼리 그룹화
4️⃣ HAVING → 그룹화된 데이터에서 추가 필터링
5️⃣ SELECT → 필요한 컬럼 선택
6️⃣ ORDER BY → 정렬 수행
7️⃣ LIMIT → 결과 개수 제한 (옵션)

SELECT PRODUCT_ID, SUM(SALES_AMOUNT)
FROM ONLINE_SALE
WHERE SALES_DATE >= '2022-03-01'
GROUP BY PRODUCT_ID
HAVING SUM(SALES_AMOUNT) > 100
ORDER BY SUM(SALES_AMOUNT) DESC
LIMIT 5;

👉 실행 순서:

1️⃣ FROM ONLINE_SALE → ONLINE_SALE 테이블에서 데이터 가져오기
2️⃣ WHERE SALES_DATE >= '2022-03-01' → 2022년 3월 이후 데이터 필터링
3️⃣ GROUP BY PRODUCT_ID → 같은 PRODUCT_ID끼리 그룹화
4️⃣ HAVING SUM(SALES_AMOUNT) > 100 → 판매량 합계가 100 이상인 그룹만 남김
5️⃣ SELECT PRODUCT_ID, SUM(SALES_AMOUNT) → 최종 컬럼 선택
6️⃣ ORDER BY SUM(SALES_AMOUNT) DESC → 판매량 많은 순서로 정렬
7️⃣ LIMIT 5 → 상위 5개만 출력

✅ 2. UNION 사용 시 실행 순서

UNION은 두 개 이상의 SELECT 결과를 합치는 연산
따라서, 각 SELECT가 개별적으로 먼저 실행된 후, UNION이 적용됨.

🔹 실행 순서
1️⃣ 첫 번째 SELECT 실행
2️⃣ 두 번째 SELECT 실행
3️⃣ 두 개의 결과를 합침 (UNION 적용)
4️⃣ 정렬이 있다면 ORDER BY 실행

SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3

UNION ALL

SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3

ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;

✅ SELECT는 단독 실행 시 위 순서대로 진행됨!
✅ UNION을 사용하면 각 SELECT가 먼저 실행되고, 그 후에 결과가 합쳐짐!

profile
IT기업에서 운영 기획 담당하고 있습니다 : )

0개의 댓글