BookmarkSubscribeRSS Feed

[SQL 6-2] UNION 집합 연산자 (UNION set operator)

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 322

[SQL 6-2] UNION 집합 연산자(UNION set operator)

 

안녕하세요 ^^

이번 시간에는 SQL에서 사용하는 UNION 집합 연산자에 대해 공부해보겠습니다.

 

이번 시간의 목표는 다음과 같습니다.

  1. UNION 집합 연산자를 사용할 때 SQL 프로세스 설명하기
  2. UNION 집합 연산자 사용하기
  3. modifier ALL과 CORR 사용하기

 

▶ Business Scenarios는 A 또는 B 교육을 이수한 직원들의 목록을 추출하는 것입니다.

 UNION 집합연산자의 Default 기능을 살펴보자.

- 행(Rows)

두 개의 중간 result sets의 행들을 연결하여 최종 result set을 생성한 후, 최종 result set에서 중복된 행을 제거합니다.

- 열(Columns)

열은 Select 절에서의 위치가 일치해야 하며 같은 변수 유형(type)이어야 합니다.

또 최종 result set의 열 이름은 첫 번째 result set의 이름을 따릅니다.

따라서 UNION 집합 연산자를 사용할 때 SQL 프로세스는 두 개의 중간 result set을 연결한 후 중복되는 행을 제거하는 두 단계입니다.

 

SE22016122114375970.png

 

 UNION 집합연산자를 사용하는 예시를 보겠습니다.

우리가 사용할 두 개의 데이터셋(train_a, train_b)은 다음과 같습니다.

각각 10개, 5개의 행을 가지고 있는 것을 확인할 수 있습니다.

 

 

SE22016122114382870.png          SE22016122114383370.png

  

SE22016122114384070.png          SE22016122114384570.png

 

 

또는 B 교육을 이수한 직원들을 뽑아내기 위해 UNION 집합연산자를 사용한 아래 코드를 실행하고자 합니다.

 

SE22016122114390970.png

 

위 코드를 실행하면 아래와 같이 두 데이터셋을 위아래로 연결한 후 증복된 행을 제거합니다.

10개 행과 4개 행이 연결되어 총 14개 행을 가진 자료를 생성한 후 중복된 2개의 행을 제거하게 됩니다.

 

SE22016122114395070.png  →   SE22016122114400870.png

 

 

 최종 result set은 다음과 같이 총 12개 행과 2개 열을 가지고 있는 것을 확인할 수 있습니다.

 

SE22016122114405170.png

 

 

 modifier ALL과 CORR 사용하기

 

 UNION 집합연산자를 사용한 코드에서 Train_a와 Train_b의 모든 열이 중간 결과 테이블에 포함되도록 * 연산자를 사용하여 실행해보겠습니다.

 

SE22016122114411870.png

  

SE22016122114413470.png

 

코드 실행 결과, 두 데이터셋의 같은 위치에 있는 열들의 변수 유형이 일치하지 않는 오류가 발생하였습니다.

 

 ALL modifier을 사용한 행(Rows)의 처리

ALL modifier를 사용하면, 두 개의 중간 result set의 행들이 연결된 후 중복된 행을 최종 result set에서 제거하지 않습니다.

 CORR modifier을 사용한 열(Columns)의 처리

CORR modifier를 사용하면, 두 중간 result set에서 각 열은 변수명에 의해 매칭되고 변수명이 매칭되지 않는 열은 제거됩니다.

UNION 집합연산자의 Default 기능을 수정하기 위해 CORR modifier을 사용하여 다시 실행해보겠습니다.

 

SE22016122114424670.png          SE22016122114425470.png

 

결과를 살펴보면, 변수는 ID, Name을 갖는 12행으로 적절하게 추출된 것을 확인할 수 있습니다.

 

이 결과는 아래와 같이 Result set 1에서는 Date변수가, Result set 2에서는 SDate, EDate변수가 매칭되지 않아 제외되어 나타난 것입니다.

 

SE22016122114430870.png

 

 

 

 

이상 UNION 집합 연산자에 대해 살펴보았습니다.

감사합니다 ^^

 

 

 

Version history
Last update:
‎06-17-2020 12:51 AM
Updated by:
Contributors

sas-innovate-white.png

🚨 Early Bird Rate Extended!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Lock in the best rate now before the price increases on April 1.

Register now!

Article Labels
Article Tags