BookmarkSubscribeRSS Feed

[SQL 6-5] INTERSECT 집합연산자(INTERSECT Set Operator)

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

[SQL 6-5] INTERSECT 집합연산자(INTERSECT Set Operator)

안녕하세요  ^^

이번 시간에는 INTERSECT(교차) 집합 연산자에 대해 공부해보겠습니다.

이번 시간의 목표는 다음 세 가지입니다.

  1. INTERSECT 집합 연산자의 SQL 프로세스 알기
  2. INTERSECT 집합 연산자 사용하기
  3. modifier CORR와 modifier CORR 사용하기

 

 먼저 INTERSECT 집합 연산자를 사용할 때 수행되는 SQL 프로세스는 다음과 같습니다.

 Business Scenario는 교육 A와 교육 B를 모두 수요한 직원 목록에 대한 보고서를 생성하는 것입니다.

 

 

SE22017011712131370.jpg

 

결과1과 결과2에 공통으로 포함되는 자료를 추출하고자 합니다.

 

INTERSECT 연산자의 프로그램 형식은 다음과 같습니다

 

SE22017011712134270.jpg

 

 

사용할 자료는 다음과 같습니다.

 

SE22017011712140470.jpg          SE22017011712141170.jpg

 

 SE22017011712141970.jpg          SE22017011712142670.jpg

 

교육A는 하루 과정이고 교육B는 일정 기간이 소요되는 과정입니다.

따라서 train_a에는 교육받은 날짜 변수가 하나이고 train_b에는 두 개의 날짜변수(시작&종료)가 있는 것을 확인할 수 있습니다.

 

 

INTERSECT 연산자를 사용했을 때 “Default” 처리과정을 살펴보겠습니다.

 

 INTERSECT 연산자의 행(Rows) 처리과정

- 두 중간 결과 셋 각각에서 중복된 행을 제거합니다.

- 두 번째 결과 셋에 존재하는 첫 번째 중간 결과 셋의 행들을 추출합니다.

 

 INTERSECT 연산자의 열(Columns) 처리과정

- 열은 위치에 따라 결합되며 각 위치의 열들은 같은 data 형식(type)이어야 합니다.

- 최종 결과 셋의 변수명은 첫 번째 결과 셋의 변수명을 따릅니다.

 

 

그럼 INTERSECT 연산자를 실행해보겠습니다.

 

 

SE22017011712151970.jpg          SE22017011712153170.jpg

 

결과를 보면, 교육 A와 B를 모두 수강한 직원 2명의 ID와 이름이 추출된 것을 확인할 수 있습니다.

 

 

이 결과에 대한 프로세스를 살펴보겠습니다.

먼저 두 개의 중간 결과 셋이 아래와 같이 있습니다

 

SE22017011712155970.jpg

 

INTERSECT 연산자는 각 두 중간 결과 셋에서 중복된 행을 제거합니다.(여기서는 중복되는 행은 존재하지 않습니다.)

이어서 두 번째 중간 결과셋에는 없는 첫 번째 중간 결과셋의 자료를 삭제합니다.

 

SE22017011712161670.jpg

 

 8명의 자료가 삭제되어, 최종결과로는 첫 번째 결과셋의 두 명의 직원 자료가 남게됩니다.

 

 

 

▶ Modifier를 사용했을 때의 INTERSECT 연산자의 처리방식은 어떻게 달라질까요?

 

 ALL Modifier를 사용했을 때 처리방식

- 중복되는 행들이 중간 결과 셋에서 제거되지 않습니다.

- 두 번째 결과 셋에 존재하는 첫 번째 중간 결과 셋의 행들을 추출합니다.

 

 CORR Modifier를 사용했을 때 처리방식

- 변수명에 따라 열들이 매칭됩니다.

- 매칭되지 않은 컬럼들은 중간 결과 셋에서 삭제됩니다.

 

 

 

 추가 시나리오

▷ 팀의 매니저 Bob는 교육 A와 B 중 하나의 교육도 수강하지 않고 있는 팀 맴버가 있는지 보고 싶어 합니다.

 

팀 맴버는 다음과 같습니다.

 

SE22017011712170170.jpg          SE22017011712171170.jpg

 

 

교육 A와 교육 B의 수강생을 통합한 후 team에 속해있지 않은 직원을 추출해보겠습니다.

 

SE22017011712173770.jpg          SE22017011712174970.jpg

 

 결과를 보면, Bob의 팀 맴버인 Anne은 교육 A와 B를 모두 수강하지 않고 있음을 확인할 수 있습니다.

 

 

 

 

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

 

감사합니다 ^^

 

 

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

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

Article Labels
Article Tags