BookmarkSubscribeRSS Feed

[SQL 2-2] Specifying Columns

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

[SQL 2-2] Specifying Columns

​안녕하세요^^

오늘은 함수를 사용하여 새로운 columns을 지정하는 방법에 대해 알아보도록 하겠습니다.

예를 들어,

employee_information 데이터를 이용하여, Employee의 identifier, gender, age에 대한 report를 작성하고자 합니다.​

​​즉, 아래와 같은 포멧의 report를 작성하고자 합니다.

SE22016111710112670.jpg

 

만약, 데이터 셋에 Employee의 id, gender는 존재하지만, age변수 대신 birth_date(생일)이 존재한다면

Birth_date 변수를 이용하여 Employee의 age(나이)를 계산하여야만 합니다.

​​

나이 계산을 위해, SAS date와 몇 가지 함수에 대해 먼저 공부해 보겠습니다.

======================================================================

 

SAS의 date는 1960년 1월 1일을 ‘0’으로 저장하고 있습니다.

 

SE22016111710185270.jpg

  

아래는 SAS의 날짜를 계산하는데 종종 사용되는 수치형 함수입니다.

 

SE22016111710190970.jpg

 

※ PROC SQL은 대부분의 SAS DATA step의 함수를 사용할 수 있습니다.

​하지만, 사용할 수 없는 함수도 종종 있습니다(예를들어, LAG, DIF 함수 등)

 

======================================================================

 

이제 오늘 날짜와 birth_date(생일) 변수를 이용하여 age(나이) 변수를 만들어 보겠습니다.

 

SE22016111710202070.jpg

 

위에 작성한 코드처럼, (오늘날짜(today()) – birth_date(생일)) 의 값은 ‘일’(day)에 해당하는 값을 보여줍니다.​

​따라서, age(나이)로 변경하기 위해서는 day / 365(일)로 계산하여 ‘년’(year) 단위로 계산해야 합니다.

​즉, 위의 코드는 ‘년’(year) 단위로 계산한 변수를 as를 이용하여 Age라는 변수명으로 저장하는 코드입니다.

​다음으로, 위와 같은 데이터를 사용하여 생년월일의 월을 나타내는 BIRTH_MONTH변수를 만들어보겠습니다.

​즉, 아래와 같은 결과를 얻는 코드를 작성해보고자 합니다.

 

SE22016111710210070.jpg

 

만약새로운 column을 만든다면, as를 사용하여 새로운 table에 column 이름을 지정할 수 있습니다.

 

SE22016111710211770.jpg

 

즉, month함수는 SAS 날짜변수인 BIRTH_DATE에서 개월(month)을 보여주기 때문에, 1~12의 정수 값을 갖게됩니다.

​위의 코드를 실행하면 work 라이브러리에,

birth_month라는 테이블명에 birth_month라는 변수 명으로 생년월일의 월이 저장됩니다.

​이제, 지금까지 다루었던 내용에 대해 실습을 해보도록 하겠습니다.

먼저, 가장 간단한 예제로 sasuser 라이브러리에 있는, payrollmaster 데이터를 이용해보도록 하겠습니다.

(혹시, 데이터가 없는 분들을 위해 text 파일을 함께 올려드립니다.)

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

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

 

SE22016111710225670.jpg

 

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

 

SE22016111710231270.jpg

 

Q1. 테이블 PAYROLLMAST에서 변수 EmpID, Gender, JobCode, Salary 변수만을 볼 수 있도록 수정하는 쿼리는?

A1. ​아래와 같은 코딩으로 이 문제를 해결할 수 있습니다.

     CREATE TABLE문으로 PAYROLLMASTER1이라는 테이블을 만드는데,

​     SELECT문장으로 앞서 언급한 4개의 변수(EmpID, Gender, JobCode, Salary)만을 포함하는 테이블을 생성합니다.

 

SE22016111710240670.jpg

 

 위와 같은 코드를 작성하고상위 10개의 데이터를 살펴보면 아래와 같습니다.

 

SE22016111710242270.jpg

 

Q2. 테이블 PAYROLLMAST에서 변수 EmpID, Gender, JobCode, Salary를 포함하고, 새로운 column인 TAX변수를 추가하는 쿼리는? (단, TAX는 Salary의 10%)

​A2. ​아래와 같은 코딩으로 이 문제를 해결할 수 있습니다.

     ​CREATE TABLE문으로 PAYROLLMASTER2이라는 테이블을 만드는데,

     ​SELECT문장으로 앞서 언급한 4개의 변수(EmpID, Gender, JobCode, Salary)을 포함하는 테이블을 생성합니다.

     ​또한, salary의 10%를 TAX라는 변수로 생성하기 위해, Salary * 0.1의 값을 TAX변수로 저장합니다.

 

SE22016111710251070.jpg

 

즉, 위와 같은 코드를 작성하고, 상위 10개의 데이터를 살펴보면 아래와 같습니다.​

​이상 함수를 사용하여 새로운 columns을 지정하는 방법에 대해 알아보았습니다.

감사합니다^^​

 

 

Version history
Last update:
‎06-16-2020 10:12 PM
Updated by:
Contributors

sas-innovate-white.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.

 

Early bird rate extended! Save $200 when you sign up by March 31.

Register now!

Article Labels
Article Tags