BookmarkSubscribeRSS Feed

[SQL 2-3] Specifying Rows

Started ‎06-16-2020 by
Modified ‎06-16-2020 by
Views 177

[SQL 2-3] Specifying Rows

 

안녕하세요^^

오늘은 rows를 subset하는 방법에 대해 더 자세히 알아보도록 하겠습니다.

​지난 시간 다루었던 PAYROLLMASTER 테이블을 이용하여 예제를 통하여 설명하도록 하겠습니다.

​Payrollmaster 데이터는 148개의 관측치를 갖고, 6개의 변수를 갖습니다.

 

이 결과는 PROC CONTENTS를 이용하여 살펴본 변수와 속성 리스트 입니다.

 

SE22016111710384070.jpg

 

 

간단히상위 10개의 데이터를 먼저 살펴보면 아래와 같습니다.

 

SE22016111710385970.jpg

 

지난 시간 WHERE절에 대해 소개하고, 여러 가지 연산자에 대해 간략히 알아보았습니다.

​이번 시간, 계산하여 새롭게 만든 columns에 대해 where절에서 조건을 주는 방법에 대해 알아보도록 하겠습니다.

아래의 결과처럼,

​​Salary의 20%를 Bonus로 받는다고 하고, Bonus가 $30,000보다 큰 사람의 정보를 얻고자 합니다.

 

SE22016111710432870.jpg

 

 위의 결과를 얻기 위해,

 

SE22016111710434470.jpg

 

SELECT문장에 Salary의 20%를 Bonus라는 변수로 저장하고,

​Bonus가 $30,000보다 큰 사람에 대한 조건을 where절에 작성하였습니다.

​그 결과 SAS log창에 아래와 같은 에러 메세지를 얻습니다.

 

SE22016111710441970.jpg

 

​이와 같은 에러를 얻게 되는 이유는 코드를 작성한 순서와는 다르게,

​코드가 실행되는 순서는 where절이 select문 이전에 실행되기 때문입니다.

​따라서, Bonus 변수가 select문에서 계산하여 만든 변수라는 것을 언급해야 합니다.

이 때 사용되는 keyword는 calculated 입니다.

​즉, 아래와 같이 작성한다면,

 

SE22016111710450270.jpg

 

 

Salary의 20%를 Bonus로 받는다고 하고, Bonus가 $30,000보다 큰 사람의 정보를 얻을 수 있습니다.

 

SE22016111710452270.jpg

 

 

Calculated는 from절에서만 사용되는 것이 아니라, SELECT문에서도 사용할 수 있습니다.

계산을 통해 만들어진 변수를 다시 계산에 사용하는 경우, calculated를 사용하여야 합니다.

 

SE22016111710454970.jpg

 

SE22016111710460170.jpg

 

 

Calculated를 사용하지 않으면, 위에서 보았던 에러와 같은 에러 메세지를 얻게 됩니다.

 

SE22016111710462970.jpg

 

SE22016111710463870.jpg

 

 

 

 

이상 rows를 subset하는 방법에 더 자세히 대해 알아보았습니다.

감사합니다^^​