[SQL 2-2] Specifying Columns
안녕하세요^^
이번 시간에는 새로운 변수를 생성하는 다양한 방법에 대해 공부해보겠습니다.
======================================================================
▶ 먼저, Table에서 필요한 컬럼을 선택하는 Query를 살펴보겠습니다.
Select Clause에서 선택하고 싶은 컬럼을 원하는 순서대로 나열합니다.
Select, Group by 혹은 Order by Clause에서 컬럼명을 나열할 때
컬럼을 구분하는 구분자로는 ,(comma)를 사용하여야 합니다.
PROC SQL OUTPUT의 일부분을 보면,
Select Clause에서 선택하였던 직원아이디, 성별, 연봉 변수만이 보여지고 있는 것을 확인 할 수 있습니다.
======================================================================
▶ 이번에는 각 직원 연봉의 10% 값을 갖는 “Bonus”라는 이름의 새로운 컬럼을 생성하고자 합니다.
Select Clause에서 Salary컬럼에 0.10을 곱하는(*) 수식을 작성한 후
AS 키워드를 사용하여 새로운 컬럼명 “Bonus”를 지정해 준 코드를 볼 수 있습니다.
PROC SQL OUTPUT의 일부분을 보면,
직원 별로 연봉의 10%가 Bonus라는 새로운 컬럼의 값으로 산출되어 있음을 알 수 있습니다.
======================================================================
▶ 직원 등급 별 적용 비율을 달리한 Bonus 컬럼을 생성해보고자 합니다.
O 위 작업을 위해 SCAN 함수를 공부하도록 하겠습니다.
‘직원 등급’은 ‘직원 직급’ 컬럼의 끝 부분에서 알 수 있습니다.
SCAN 함수의 형태는 위와 같습니다.
SCAN 함수는 구분자(charlist)를 기준으로 문자(string 자리값)를 분할하여,
n번째(count 자리값) 분할된 요소를 반환합니다.
예를 들어, 코드를 실행하겠습니다.
위 프로그램이 실행되는 과정은 다음과 같습니다.
Job_Title이라는 변수의 한 관측값이
“Office Assistant II”라면
SCAN 함수에 의해 space 구분자로 분할되어 세 요소 “Office”, “Assistant”, “II”로 나뉠 것입니다.
이 세 요소 중 세 번째 요소인 “II”값을 반환합니다.
Job_Title이라는 변수의 한 관측값이
“Secretary I”이라면
SCAN 함수에 의해 space 구분자로 분할되어 두 요소 “Secretary”, “I”로 나뉠 것입니다.
여기서 위 예시와 다른 점은 세 번째 요소를 선택하여야 하는데, 두 개 요소로만 분할되었기 때문에
반환할 세 번째 요소가 존재하지 않는다는 점입니다.
이럴 때 SCAN 함수는 공백(blank)을 반환합니다.
다른 예로,를 실행하겠습니다.
위 프로그램이 앞서 보았던 두 예시와 다른 점은 count 자리에 음수가 나타났다는 점입니다.
SCAN 함수의 count 자리에 음수가 나타나면, 이전과는 달리 오른쪽에서 왼쪽으로 순서가 정해집니다.
아래 그림처럼 “Secretary I”, “Office Assistant II”의 값에 대해
그리스 숫자에 해당되는 부분이 -1자리, 이후 왼쪽으로 가며 -2, -3의 자리값을 갖는 것을 확인할 수 있습니다.
따라서 SCAN 함수는 각각 “I”값과 “II”값을 반환합니다.
이상 SCAN 함수에 대해 공부해보았습니다.
======================================================================
O 이어서 Case Expression에 대해 살펴보겠습니다.
Case Expression을 이용하여 조건을 주어 새로운 변수를 생성할 수 있습니다.
Case Expression은 두 가지 형식이 있습니다.
그 중 하나는 아래와 같습니다.
Case Expression은 “Case”로 시작하여 “End”로 마치며 When-Then의 키워드가 한 묶음으로 사용됩니다.
table의 각 row(행)에 대해 적용되고 최종적으로 하나의 값을 반환합니다.
우리의 목표는 직원 등급 별 적용 비율을 달리한 Bonus 컬럼을 생성하는 것입니다.
위와 같이 SCAN 함수를 사용하여 직원 등급을 반환시켜
1, 2, 3, 4등급일 때의 인센티브 비율을 각각 0.05, 0.07, 0.10, 0.12로 설정하였습니다.
1, 2, 3, 4등급 외 등급은 일괄적으로 0.08을 적용한 것을 확인할 수 있습니다.
Case Expression의 다른 하나의 형태는 아래와 같습니다.
첫 번째 형식으로 작성한 작업과 같은 작업으로서
When 다음에 제시되는 조건 부분에서
공통으로 사용되는 SCAN함수(연산 대상)를 Case 다음에 위치시킨 방식입니다.
PROC SQL OUTPUT의 일부분을 보면,
직원 등급 별 적용 비율을 달리한 Bonus 컬럼이 산출되어 있음을 확인할 수 있습니다.
이상 Table에 새로운 컬럼을 생성하는 SQL Procedure에서의 여러 방식을 살펴보았습니다.
감사합니다 ^^
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.