[SQL 6-3] OUTER UNION 집합연산자 (OUTER UNION Set Operator)
안녕하세요^^
이번 시간에는 OUTER UNION(아우터 결합) 집합 연산자를 사용하는 방법에 대해 살펴보겠습니다.
이번 시간의 목표는 다음 세 가지입니다.
▶ 먼저 OUTER UNION 집합 연산자를 사용할 때 수행되는 SQL 프로세스를 보겠습니다.
OUTER UNION 연산자의 프로세스를 보기 위한 Business Scenario는 다음과 같습니다.
▷ Business Scenario는 교육 A 그리고/또는 B를 수료한 직원들은 누구이며 교육 시작일/종료일은 언제인지에 대한 보고서를 생성하는 것입니다.
OUTER UNION 연산자의 프로그램 형식은 다음과 같습니다.
예제로 사용할 자료는 아래에서 확인할 수 있듯이 train_a(교육A)와 train_b(교육B) 데이터셋입니다.
교육A는 하루 과정이고 교육B는 일정 기간이 소요되는 과정입니다.
따라서 train_a에는 교육받은 날짜 변수가 하나이고 train_b에는 두 개의 날짜변수(시작&종료)가 있는 것을 확인할 수 있습니다.
OUTER UNION 연산자를 사용했을 때 “Default” 처리과정을 살펴보겠습니다.
▷ OUTER UNION 연산자의 행(Rows) 처리과정
- 두 중간 결과 셋의 행을 위아래로 결합한 후, 중복되는 행은 최종 결과 셋에서 제거합니다.
▷ OUTER UNION 연산자의 열(Columns) 처리과정
- 두 중간 결과 셋의 모든 열(변수)을 가져오며, 변수 명이 같더라도 하나의 변수로 통합되지 않습니다.
그럼 예제 자료를 활용하여 OUTER UNION 연산자를 실행해보겠습니다.
결과를 보면 train_a와 train_b 각 자료 변수의 합만큼 생성된 것을 확인할 수 있습니다.
여기서 한 가지 문제는 고유번호인 ID가 두 개의 변수로 분리되어 있다는 점입니다.
고유번호 ID를 하나의 변수로 결합하기 위해서는 Modifier CORR가 필요한데요, 아래에서 바로 확인해보도록 하겠습니다.
▶ Modifier를 사용했을 때의 OUTER UNION 연산자의 처리방식은 어떻게 달라질까요?
▷ CORR Modifier를 사용했을 때 처리방식
- 두 중간 결과 셋의 모든 변수(열)를 선택한 후, 중복되는 변수는 하나의 열로 통합합니다.
▷ ALL Modifier를 사용했을 때 처리방식
- ALL Modifier는 OUTER UNION 연산자의 기본(default) 수행방식이므로, 추가적으로 ALL Modifier를 코딩하여 적용할 수는 없습니다.(즉, outer union 자체가 ALL Modifier의 수행방식과 같습니다.)
CORR Modifier를 사용하여 OUTER UNION 연산자를 실행하겠습니다.
결과를 보시면 train_a와 train_b의 각 ID가 하나의 변수로 결합된 것을 확인할 수 있습니다.
▶ 어떤 DATA step statement가 OUTER UNION 연산자와 같은 결과를 생성할까요?
a) MERGE
b) APPEND
c) SET
d) STACK
정답은 c) SET 입니다.
SET statement를 사용하여 OUTER UNION 연산자를 사용했을 때와 같은 결과를 얻을 수 있습니다.
이상 OUTER UNION 집합 연산자에 대해 살펴보았습니다.
감사합니다 ^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.