반응형
반응형

1. 집합 연산자 종류

이름 기능
UNION 두 집합을 합친다.(중복 데이터 제거)
UNION ALL 두 집합을 합친다.(중복 데이터 모두 출력)
INTERSECT 두 집합 모두 가지는 데이터만 출력
EXCEPT 앞 집합에서 뒷 집합을 제외한 결과 출력
  • 예제 데이터
-- SALE1 Table
CREATE TABLE SALE1
(
NAME VARCHAR(50)
, AMOUNT NUMERIC(15,2)
);
INSERT INTO SALE1
VALUES
('Mike', 150)
, ('Jon', 132)
, ('Mary', 100)
;

SELECT * FROM SALE1;

name amount
0 Mike 150.00
1 Jon 132.00
2 Mary 100.00
-- SALE2 Table
CREATE TABLE SALE2
(
NAME VARCHAR(50)
, AMOUNT NUMERIC(15,2)
);
INSERT INTO SALE2
VALUES
('Mike', 120)
, ('Jon', 142)
, ('Mary', 100)
;

SELECT * FROM SALE2;

name amount
0 Mike 120.00
1 Jon 142.00
2 Mary 100.00

2. UNION

  • 두 집합을 합치며, 중복 데이터는 제거 된다.
  • 중복 데이터인 Mary는 중복 제거 후 1건만 출력됨
SELECT * FROM SALE1
UNION
SELECT * FROM SALE2

name amount
0 Jon 132.00
1 Mary 100.00
2 Mike 120.00
3 Jon 142.00
4 Mike 150.00

3.UNION ALL

  • 두 집합을 합치며, 중복 데이터도 모두 출력된다.
  • 중복 데이터인 Mary도 2건 모두 출력
SELECT * FROM SALE1
UNION ALL
SELECT * FROM SALE2

name amount
0 Mike 150.00
1 Jon 132.00
2 Mary 100.00
3 Mike 120.00
4 Jon 142.00
5 Mary 100.00

4.INTERSECT

  • 두 집합 모두 가지는 데이터만 출력한다.
  • 중복 데이터인 Mary만 출력
SELECT * FROM SALE1
INTERSECT
SELECT * FROM SALE2

name amount
0 Mary 100.00

5.EXCEPT

  • 앞 집합에서 뒷 집합을 제외한 모든 데이터를 출력
  • JON, MIKE, MARY에서 중복된 MARY만 제외 후 출력
SELECT * FROM SALE1
EXCEPT
SELECT * FROM SALE2

name amount
0 Jon 132.00
1 Mike 150.00

# 참고

반응형

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL] 7. 데이터 조작(INSERT, UPDATE, DELETE)  (0) 2021.05.23
[SQL] 6. 서브 쿼리(Sub Query)  (0) 2021.04.19
[SQL] 4. 분석 함수  (0) 2021.04.05
[SQL] 3. 데이터 집계(Group by)  (0) 2021.04.01
[SQL] 2. 데이터 조인  (0) 2021.03.29

+ Recent posts

반응형