SAS Certification Prep Guide,

Advanced Programming for SAS 9 fourth edition

PART 1. SQL Processing with SAS 


Chapter 1. Performing Queries using PROC SQL - (1) 

먼저, SQL은 Structured Query Language 의 약어고요. 데이터베이스에서 테이블을 검색하거나, 결합, 수정 이런 작업에서 쓰이는 언어입니다. SAS의 PROC SQL은 이 SQL의 SAS 버전입니다. SQL의 역할과 마찬가지로, 기존의 데이터를 PROC SQL을 이용해서 새로운 데이터 테이블을 만드는게 목적이고요. 그러면 데이터를 어떤 변수를 기준으로 할지 어떻게 데이타를 합칠지 이런 내용을 다루겠죠.


SQL과 SAS 는 같은 언어를 쓰는건 아니고요. 

데이터 파일을 SAS는 SAS data file, SQL table이라고 부르고요. 각 기록? 그러니까 관측치를 SAS에서는 observation라 하고, SQL은  row 라고 합니다. 그리고 변수를 SAS에서는 variable SQL은 column 으로 부릅니다. 같은걸 표현하는 언어가 살짝 다를뿐이예요. 



PROC SQL 일반 형식 



참고로 PROC SQL 프로시져는 다른 SAS 구문과 달리 RUN; 명령어로 끝내지 않습니다. RUN;이라고 마지막에 넣는다고 해도 log file에서는 NOTE: PROC SQL statements are executed immediately; The RUN statement has no effect. 라고 알려주지만 에러나진 않습니다. 다만 PROC SQL 프로시져를 마칠대는 QUIT;이라는 명령어를 씁니다. QUIT이라는 명령어를 안쓰면 Note: As a precaution, SAS Enterprise Guide automatically adds a QUIT statement to your code when you submit it to SAS. However, you should get in the habit of adding the QUIT statement to your code. 이런식으로 메시지가 뜹니다.   




책에서는 다음과 같은 예를 들었는데요. 

SELECT 문구를 써서 empid, jobcode, salary라는 변수를 불러왔습니다. 이렇게 SELECT 다음에는 하나 이상의 변수를 , 를 구분으로 불러옵니다. SELECT구문에는 이처럼 기존에 있는 변수를 불러올 수 있거나, 아니면 새로운 변수를 지정할 수 있어요. 그 다음 문구 salary * .06 as bonus가 그 예입니다. as를 이용해서 salary * .06 이렇게 계산한 값을 bonus로 지칭한다~ 라는 뜻이예요. 그래서 여기서는 bonus가 새로운 변수 있니다. 


그런다음 FROM을 써서 어떤 테이블을 사용할껀지 불러온건데요. 이때 라이브러리이름.테이블이름 이렇게 지정해줍니다. 여기에서는 sasuser라는 영구 라이브러리에 payrollmaster라는 테이블을 불러왔습니다. 


그런다음 WHERE 조건문으로 테이블의 모든 observations (row)를 다 불러오진 않고 salary변수 중에 32000 이하의 값 (observations / rows) 만 불러옵니다.  


그리고 이 observations들은 ORDER BY라는 구문으로 정렬이 되어집니다. 이때 ORDER BY 변수들이 나오고 변수가 여러개 나오면 변수사이에 , (콤마)를 넣으면 됩니다. 이때 default, 즉 기본값으로는 오름차순으로 정렬됩니다. 만약 내림차순으로 하고싶으면 ORDER BY jobcode desc; 적으면 됩니다. 꼭 변수 이름이 아니더라도 position number를 지정해줘도 됩니다. 예를들어 order by 2; 라고 하면 처음 select empid, jobcode, salary, 에서 두번째가 jobcode가 되지요. 그래서 by 2 라고 하면 jobcode를 뜻하게 됩니다. 

반응형

+ Recent posts