데이터 분석/SQL

[쉽게 쓴 SQL] UNION + ALL

참치바나나 2020. 11. 6. 16:42

UNION

[연산] : 집합(sql을 통해 추출된 결과)을 하나로 합칠 때 사용한다. 중복된 데이터를 생략해 준다.

UNION ALL

[연산] : 집합(sql을 통해 추출된 결과)을 하나로 합칠 때 사용한다. 중복 된 데이터도 보여 준다.

union all이 더 많이 쓰인다.

 

 

실습

닮은 두 테이블 sales2007_1, sales2007_2를 만든다.

CREATE TABLE sales2007_1
( 
	name varchar(50)
	,amount NUMERIC(15, 2)
);

CREATE TABLE sales2007_2
(
	name varchar(50)
	,amount numeric(15,2)
);

INSERT INTO sales2007_1
VALUES
('mike',150000.25)
,('jonin',132999.75)
,('mary',10000);

COMMIT;

INSERT INTO sales2007_2
VALUES
('mike',120000.25)
,('jonin',102999.75)
,('mary',10000);

COMMIT;

두 테이블 결과

 

간단한 합치기 3가지 - UNION

--- 전체 합치기 
SELECT
	*
FROM
	sales2007_1
UNION
SELECT
	*
FROM
	sales2007_2;

--- 이름만 합치기 
SELECT
	name
FROM
	sales2007_1
UNION
SELECT
	name
FROM
	sales2007_2;

--- 총액만 합치기 
SELECT
	amount
FROM
	sales2007_1
UNION
SELECT
	amount
FROM
	sales2007_2
ORDER BY
	amount DESC ;

합치기(유니온) 결과, 왼쪽부터 전체 합치기, 그 다음 이름만 합치기, 마지막 총액 합치기

 

처음은 중복된 ('mary',10000)이 없어짐

다음은 중복된 mary, jonin, mike가 하나씩 없어짐

마지막은 중복된 10000이 없어짐

 

간단한 합치기 3가지 - UNION ALL

--- 전체 합치기 
SELECT
	*
FROM
	sales2007_1
UNION ALL
SELECT
	*
FROM
	sales2007_2;

--- 이름만 합치기 
SELECT
	name
FROM
	sales2007_1
UNION ALL
SELECT
	name
FROM
	sales2007_2;

--- 총액만 합치기 
SELECT
	amount
FROM
	sales2007_1
UNION ALL
SELECT
	amount
FROM
	sales2007_2
ORDER BY
	amount DESC ;
--- ORDER BY는 맨 아래에 

왼쪽부터 전체 합치기, 그 다음 이름만 합치기, 마지막 총액 합치기