BookmarkSubscribeRSS Feed

INTERSECT

Started yesterday by
Modified yesterday by
Views 53

SQL에서 INTERSECT문은 '두 데이터셋에서 모두 존재하는 값만 보구 싶다.' 라는 경우에 사용합니다.

예를 들어, 아래의 경우에 INTERSECT 문을 활용합니다.

  • A와 B 데이터셋에서 모두 존재하는 직원 찾기

  • 중복된 사원 목록에서 확인하기

  • 특정 조건을 만족하는 공통의 데이터 찾기

 

 

image.png

 https://www.sqlservertutorial.net/sql-server-basics/sql-server-intersect/

 

 

 

 

■ INTERSECT 기본 Syntax

 

proc sql;
    select *
    from data1
    intersect
    select *
    from data2;
quit;

 

INTERSECT 의 기본 syntax 는 위와 같습니다.

그리고 사용할 때는 몇 가지 조건이 있습니다.

  1. 컬럼의 갯수

비교 대상이 되는 두 개의 테이블의 SELECT 문의 컬럼의 갯수가 동일해야합니다.

a테이블의 컬럼의 갯수가 5개이고 b테이블의 컬럼의 갯수가 3개이면 오류를 출력합니다.

2. 컬럼의 순서

컬럼의 위치를 기준으로 데이터를 비교해서 공통의 데이터를 추출하는 것이기 때문에 컬럼의 순서가 동일하지 않으면 오류를 출력합니다.

3. 데이터 타입

비교 대상의 컬럼의 데이터 타입이 서로 같아야합니다.

예를 들어, 비교하려는 두개의 테이블의 칼럼의 갯수가 같고, 순서가 동일하더라도 A테이블의 d 칼럼과 B테이블의 d칼럼의 변수 타입이 각각 변수가 문자형 변수와 숫자형 변수라면 오류를 출력합니다.

 

 

 

 

■ INTERSECT 예시

 

 

data employee_A;
    length name $20 dept $10 ;
    input name $ dept $ age;
    datalines;
김제니 영업 28
안유진 개발 31
장원영 마케팅 27
장원영 마케팅 27
카리나 인사 30
;
run;

data employee_B;
    length name $20 dept $10 ;
    input name $ dept $ age;
    datalines;
안유진 개발 31
장원영 마케팅 27
장원영 마케팅 27
윈터 개발 29
닝닝 영업 26
;
run;
proc sql;
    select *
    from employee_A
    intersect
    select *
    from employee_B;
quit;

 

 

 image.png

 

 

 

employee_a 와 employee_b 테이블에 공통으로 존재한는

'안유진 개발 31' 과 '장원영 마케팅 27'이 PROC SQL의 SELECT문을 통해서 출력됩니다.

이 때, '장원영 마케팅 27'은 각 테이블에 중복값으로 결과값에도 동시에 나타납니다.

 

 

 

■ INTERSECT ALL 예시

 

proc sql;
    select *
    from employee_A
    intersect all
    select *
    from employee_B;
quit;

image.png

 

 

 

INTERSECT 문은 중복을 제거한 결과값을 출력하지만 중복을 포함하여 공통의 데이터를 사용한다라면

INTERSECT ALL 옵션을 사용해 중복까지 포함된 공통의 데이터를 확인할 수 있습니다.

 

Contributors
Version history
Last update:
yesterday
Updated by:

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand with the SAS Innovate Digital Pass.

Explore Now →
Article Labels
Article Tags