에듀테크 프로젝트 대시보드
집합 연산
두 결과 집합을 세로로 합치거나 교집합·차집합을 구합니다. 컬럼 개수와 타입이 맞아야 합니다.
| 연산 | 의미 | 중복 |
|---|---|---|
UNION | 합집합 | 제거 (정렬 비용) |
UNION ALL | 그냥 이어붙이기 | 유지 (빠름) |
INTERSECT | 양쪽 모두에 있는 행 | 제거 |
EXCEPT | 왼쪽에만 있는 행 | 제거 |
UNION ALL — UNION 은 전체 정렬/해시로 dedup 함-- 활성 + 대기 사용자 한 목록으로
SELECT id, name FROM active_users
UNION ALL
SELECT id, name FROM pending_users
ORDER BY name; -- ORDER BY 는 전체에 한 번만, 맨 끝에-- 이번 달 로그인했지만 지난 달엔 안 한 사용자
SELECT user_id FROM logins WHERE month = '2026-09'
EXCEPT
SELECT user_id FROM logins WHERE month = '2026-08';-- 임시 매핑 테이블
SELECT code, label
FROM (VALUES
('P', '대기'), ('S', '발송'), ('D', '완료')
) AS status(code, label);
-- 조인에도
SELECT o.*, m.label
FROM orders o
JOIN (VALUES ('P','대기'),('S','발송')) AS m(code, label) ON m.code = o.status;INSERT INTO status (code, label)
VALUES ('P', '대기'), ('S', '발송'), ('D', '완료'); -- 같은 VALUES 문법