BookmarkSubscribeRSS Feed

[SQL 4-3] Outer Joins (테이블 outer 조인)

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

[SQL 4-3] Outer Joins

 

안녕하세요^^

오늘은 두 개의 테이블을 join하여

matching되는 columns과 matching되지 않는 rows를 포함하는 새로운 테이블을 만드는 방법에 대해 알아보도록 하겠습니다.

​​Outer join은 left, full, right outer join을 포함하며, 각각이 만들 수 있는 새로운 테이블은 아래 그림을 통해 이해할 수 있습니다.

 

SE22016122113474170.jpg

 

SE22016122113475270.jpg

 

Outer join의 쿼리를 작성하는 방법은 inner join의 쿼리를 작성하는 방법과 비슷합니다.

​On절이 outer join의 기준을 명시할 때 사용됩니다.

 

 

​예제를 통해 자세히 살펴보도록 하겠습니다.

​아래와 같이, customers와 transactions 데이터를 left outer join하여 matching되는 rows와 matching되지 않는 rows를 모두 결과로 나타내고자 합니다.

 

SE22016122113501970.jpg

 

 

 

 

우선 사용할 데이터 customers transactions는 다음과 같이 만듭니다.

 

SE22016122113505470.jpg

 

SE22016122113510070.jpg

 

그 결과 생성된 데이터는 아래와 같습니다.

 

SE22016122113512270.jpg

 

SE22016122113512870.jpg

 

이제 위에서 보았듯이, 두 테이블이 공통으로 갖고 있는 행을 id를 기준으로 찾아보도록 하겠습니다.

 

 

SE22016122113514870.jpg

 

SE22016122113515770.jpg

 

 

 

From절에서의 테이블의 위치에 대해 살펴보겠습니다.

 

SE22016122113521870.jpg

 

 

.

Left join은 좌측의 테이블을 기준으로 우측의 테이블의 matching되는 rows와 matching 되지 않는 rows를 모두 보여줍니다.

​Right join은 우측의 테이블을 기준으로 좌측의 테이블의 matching되는 rows와 matching 되지 않는 rows를 모두 보여줍니다.

​Full join은 모든 matching되는 rows와 matching되지 않는 rows를 모두 보여줍니다.

 

 

 

 

 

 

 

이제 left join 이외의 right join, full join의 경우를 추가적으로 살펴보도록 하겠습니다.

 

SE22016122113530570.jpg

 

SE22016122113531270.jpg

 

위와 같은 예제를 통해 살펴보면, right join의 경우, 우측의 테이블을 기준으로 모든 rows를 보여주는 것을 확인할 수 있습니다.

 

 

 

SE22016122113532770.jpg

 

SE22016122113533670.jpg

 

또한, full join의 경우, join하는 모든 테이블의 모든 rows를 보여주는 것을 확인할 수 있습니다.

하지만, proc sql의 경우 같은 이름의 columns를 자동적으로 merge하지 못합니다

 

 

 

 

 

 

이제, data step의 merge문과 어떤 차이가 있는지 알아보도록 하겠습니다.

 

SE22016122113541270.jpg

 

SE22016122113541970.jpg

 

Data step문장은 merge를 하기 위해 기준이 되는 변수로 sort가 되어있어야 하지만, 같은 이름의 columns는 자동적으로 merge합니다.

 

 

 

 

Proc sql문장에서 같은 이름의 columns를 하나로 columns로 나타내기 위해서는 COALESCE 함수를 사용합니다.

 

SE22016122113544770.jpg

 

SE22016122113545770.jpg

 

 

 

 

 

 

 

이상으로 proc sql문장의 outer join에 대해 알아보았습니다.

 

​​다음시간에는 proc sql문장의 더 복잡한 쿼리에 대해 알아보도록 하겠습니다.

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

sas-innovate-wordmark-2025-midnight.png

Register Today!

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.


Register now!

Article Labels
Article Tags