Economics & Deeplearning

PROC SQL Tutorial 3 - where clause, having clause 본문

SAS/PROC SQL

PROC SQL Tutorial 3 - where clause, having clause

이슈카 2016. 1. 26. 14:45

<두 개의 테이블의 결과로부터 테이블을 생성하는 법>

proc sql;

create table work.miles as

select salcomps.empid, lastname, newsals.salary, newsalary

from sasuser.salcomps, sasuser.newsals

where salcomps.empid=newsals.empid

order by 2;

quit;

 

위의 예제를 해석하면 다음과 같음

sasuser.salcompssasuser.newsals 두 개의 데이터셋에서 데이터를 불러와 카르테시안 곱의 데이터셋을 만들고, 그중 salcomps데이터셋에 empid 변수와 newsals 데이터셋에 empid 변수가 같은 것만을 남긴다. 그 이후에 empidsalcomps 데이터셋에서 불러오고, lastname은 하나의 변수에만 있기 때문에 냅두고, newsals 데이터셋에서 salary 변수를 불러오고, newsalary 도 불러온다. 마지막으로 정렬은 select 절에서 지정된 변수들 중 2번째 변수인 lastname을 기준으로 정렬한다.

create table 데이터셋명 as 문법은 실제로 테이블을 생성해준다. 출력결과는 반환하지 않는다.

 

from 절에서 . 앞에 sasuser는 라이브러리 네임이지만, select 절에서 salcomps.empid 에서의 salcomps from 절의 데이터셋 네임임

order by 절에서 숫자로, select 절의 변수를 참조할 수도 있고, 변수 이름을 그냥 써서 할 수도 있고, 그 두 가지를 섞어서 할 수도 있음 숫자로 쓰는 이유는 변수 이름을 지정하지 않을 수도 있기 때문임

proc sql;

select substr(jobcode,1,2) , count

from sasuser.payrollmaster

group by 1;

위와 같은 경우에 씀

 

proc sql에서는 run 스테이트먼트를 쓰지 않음

마지막 절만 빼고, 절과 절 사이에는 세미콜론을 찍지 않음

여러 개의 테이블을 병합하는 경우에는 where 절에서 값이 맞는지를 확인해야함

proc sql을 나갈 때는 quit; 스테이트먼트를 꼭 써줘야함

 

select 절에서 *를 쓰면 모든 변수를 가져옴

 

출력하는 관찰치의 수를 제한하고 싶으면 outobs 옵션을 줌

 

중복되는 관찰치를 없애고 싶다면, select 절에서 distinct 옵션을 줌

 

select 절에서 계산한 변수를 where 절에서 쓰고 싶은 경우 calculated 옵션을 주어야함

 

예를 들어, proc sql;

select flightnumber, date, destination, boarded + transferred + nonrevenue as total

from sasuser.marchflights

where calculated total < 100;

quit;

 

위와 같이, select 절에서 계산한 변수 totalwhere 절에서 쓰려면, calculated옵션을 줌

 

where 절에서는 다른 프로시져에서 쓰는 연산자들을 다 쓸 수 있음

 

select 절에서 summary variable을 만들 때 변수를 하나만 쓰면, 그 변수에 해당하는 모든 행에서 찾고, 여러개의 변수를 쓰면, 각 행에서 모든 변수에 대해 계산을 함

 

having 절은 where 절과 비슷하지만, having 절은 group by와 함께 써야함

각 그룹에 영향을 미치고, where은 각 개별 관찰치에 영향을 줌

'SAS > PROC SQL' 카테고리의 다른 글

PROC SQL Tutorial 6 - inner join  (0) 2016.01.26
PROC SQL Tutorial 5 - join(cartesian product)  (0) 2016.01.26
PROC SQL Tutorial 4 - subquery  (0) 2016.01.26
PROC SQL Tutorial 2  (0) 2016.01.26
PROC SQL Tutorial 1  (0) 2016.01.26
Comments