반응형
- SQL문 실습 - UNION/UNION ALL -
1. UNION/UNION ALL이란?
- 두 개의 SELECT문을 합치는 것을 말합니다.
- 두 개의 SELECT문을 합치는 것이기때문에 제약조건이 많습니다.
2. UNION/UNION ALL의 제약조건
- 상위SQL문과 하위SQL문의 컬럼 개수가 동일해야 합니다.
- 상위SQL문과 하위SQL문의 컬럼 위치가 동일한 컬럼들이 결합이 됩니다.
※ 컬럼 이름만 동일하다고 결합이 되지 않습니다.
- 컬럼명은 최상위 SQL문의 명칭을 따르게 됩니다.
3. UNION과 UNION ALL의 차이점
- UNION은 중복된 행을 제거하지만 UNION ALL은 중복된 행을 허용합니다.
- 중복된 행을 꼭 제거해야하는 경우가 아니라면 보통 UNION ALL을 사용합니다.
- 실제 환경에서는 UNION을 사용하느 경우는 극히 드뭅니다.
4. UNION/UNION ALL실습
- 문제
1 2 3 4 | --1. 다음 SQL의 IN을 UNION ALL을 사용해서 해결하시오. SELECT * FROM Orders T1 WHERE T1.CustomerID IN ('ALFKI', 'TOMSP', 'VINET') | cs |
- 답
- 위의 IN조건을 UNION ALL을 사용해서 나타내봤습니다.
1 2 3 4 5 6 7 8 9 10 11 | SELECT * FROM Orders T1 WHERE T1.CustomerID = 'ALFKI' UNION ALL SELECT * FROM Orders T2 WHERE T2.CustomerID = 'TOMSP' UNION ALL SELECT * FROM Orders T3 WHERE T3.CustomerID = 'VINET' | cs |
- 문제
1 2 3 4 | --2. Orders테이블을 조회 -- Orders의 OrderDate가 1996-07인 데이터만 조회 -- EmployeeID별로, 주문건수를 구하고, -- 마지막에 주문건수를 추가해서 보여주어라. | cs |
- 답
- UNION ALL을 사용해서 1996년도의 EmployeeID의 각 주문횟수와
- 맨 밑의 데이터에는 1996년도의 총 주문횟수를 구했습니다.
1 2 3 4 5 6 7 8 | SELECT CONVERT(NCHAR(10), T1.EmployeeID) EmployeeID, COUNT(*) OrderCount FROM Orders T1 WHERE T1.OrderDate >= '1996-07-01' AND T1.OrderDate < '1996-08-01' GROUP BY EmployeeID UNION ALL SELECT 'TTL' EmployeeID, COUNT(*) OrderCount FROM Orders T2 WHERE T2.OrderDate >= '1996-07-01' AND T2.OrderDate < '1996-08-01' | cs |
다음 글에서는 SQL Server 기본 SQL문 교육의 마지막인 LevelUpTest를 풀어보면서 설명을 해보겠습니다.
출처 : SQL Server 기본 SQL문 교육
반응형
그리드형
'프로그래밍 > MS-SQL' 카테고리의 다른 글
MS-SQL 컬럼 추가/수정/삭제 (0) | 2016.08.28 |
---|---|
MSSQL COALESCE함수 (0) | 2016.08.10 |
SQL문 실습 - TOP (0) | 2016.07.24 |
SQL문 실습 - SUB QUERY (2) (0) | 2016.07.24 |
SQL문 실습 - SUB QUERY (1) (0) | 2016.07.24 |