[SQL 6-2] UNION 집합 연산자(UNION set operator)
안녕하세요 ^^
이번 시간에는 SQL에서 사용하는 UNION 집합 연산자에 대해 공부해보겠습니다.
이번 시간의 목표는 다음과 같습니다.
▶ Business Scenarios는 A 또는 B 교육을 이수한 직원들의 목록을 추출하는 것입니다.
▷ UNION 집합연산자의 Default 기능을 살펴보자.
- 행(Rows)
두 개의 중간 result sets의 행들을 연결하여 최종 result set을 생성한 후, 최종 result set에서 중복된 행을 제거합니다.
- 열(Columns)
열은 Select 절에서의 위치가 일치해야 하며 같은 변수 유형(type)이어야 합니다.
또 최종 result set의 열 이름은 첫 번째 result set의 이름을 따릅니다.
따라서 UNION 집합 연산자를 사용할 때 SQL 프로세스는 두 개의 중간 result set을 연결한 후 중복되는 행을 제거하는 두 단계입니다.
▷ UNION 집합연산자를 사용하는 예시를 보겠습니다.
우리가 사용할 두 개의 데이터셋(train_a, train_b)은 다음과 같습니다.
각각 10개, 5개의 행을 가지고 있는 것을 확인할 수 있습니다.
A 또는 B 교육을 이수한 직원들을 뽑아내기 위해 UNION 집합연산자를 사용한 아래 코드를 실행하고자 합니다.
위 코드를 실행하면 아래와 같이 두 데이터셋을 위아래로 연결한 후 증복된 행을 제거합니다.
10개 행과 4개 행이 연결되어 총 14개 행을 가진 자료를 생성한 후 중복된 2개의 행을 제거하게 됩니다.
→
최종 result set은 다음과 같이 총 12개 행과 2개 열을 가지고 있는 것을 확인할 수 있습니다.
▶ modifier ALL과 CORR 사용하기
위 UNION 집합연산자를 사용한 코드에서 Train_a와 Train_b의 모든 열이 중간 결과 테이블에 포함되도록 * 연산자를 사용하여 실행해보겠습니다.
코드 실행 결과, 두 데이터셋의 같은 위치에 있는 열들의 변수 유형이 일치하지 않는 오류가 발생하였습니다.
▷ ALL modifier을 사용한 행(Rows)의 처리
ALL modifier를 사용하면, 두 개의 중간 result set의 행들이 연결된 후 중복된 행을 최종 result set에서 제거하지 않습니다.
▷ CORR modifier을 사용한 열(Columns)의 처리
CORR modifier를 사용하면, 두 중간 result set에서 각 열은 변수명에 의해 매칭되고 변수명이 매칭되지 않는 열은 제거됩니다.
UNION 집합연산자의 Default 기능을 수정하기 위해 CORR modifier을 사용하여 다시 실행해보겠습니다.
결과를 살펴보면, 변수는 ID, Name을 갖는 12행으로 적절하게 추출된 것을 확인할 수 있습니다.
이 결과는 아래와 같이 Result set 1에서는 Date변수가, Result set 2에서는 SDate, EDate변수가 매칭되지 않아 제외되어 나타난 것입니다.
이상 UNION 집합 연산자에 대해 살펴보았습니다.
감사합니다 ^^
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.