Chapter 2. Performing Advanced Queries Using PROC SQL  (2)

Subsetting Rows By Using Conditional Operators


PROC SQL 쿼리에서 원하는 값을 결과값으로 출력하기위해서 WHERE구문을 이용해 조건을 설정할 수 있습니다. 아래 이미지에서 예를 든것처럼, 변수의 값 중에서 GOLD라는 내용이 들어간 값만 출력한다던가, 변수 값이 특정 값 이하라던가 연결문자들을 수정하던가.. 그런게 해당됩니다. 


Using Operators in PROC SQL 

SAS PROC SQL에서 사용하는 Conditional Operator로 아래와 같습니다. 

Operator와 예문을 유의하게 잘 확인해보세요. 콤마가 있는지 등등이요. ANY, ALL, EXISTS를 제외한 나머지 오퍼레이터들은 다른 SAS 구문에서도 사용할 수 있습니다. 



1) Using the BETWEEN - AND Operator to Select within a Range of Values  

위에 든 오퍼레이터 예 중에, Between-And 오퍼레이터를 보려는데요. numeric이나 character 값 중에서 특정 범위를 선택하고자할때 WHERE구문 중에서 BETWEEN - AND 연산자를 사용하면 됩니다. BETWEEN value 1 AND value 2 인데 이때 value 1 과 value 2 는 범위의 양쪽 끝 값이 되어야겠지요. 이때 value 1 과 value 2는 범위에 포함됩니다. 범위가 특정 범위 밖의 값이라고 할때 not between을 사용하면 되겠죠. 


2) Using the CONTAINS or ? (Question mark) Operator to Select a String

위에 든 오퍼레이터 예 중에, CONTAIN 또는 ? 연산자를 보려고 합니다. Contain이 포함되다란 뜻을 가지고 있잖아요. 그래서 이 연산자의 기능은, 행을 출력하고자할때 그 행에 해당하는 열(column)에 특정 단어가 포함되어있을 경우를 말합니다. 다시말해 특정 단어가 있는 행을 출력하는 기능을 갖습니다. 아래 예를 보면~ 


name이라는 변수이름을 갖는 결과값을 출력하려고 하는데요. 이때 결과값은 outobs=10 즉 10개만 출력하려고 해요. 데이터는 sasuser 라이브러리에 frequentflyers라는 데이터에서 naem의 변수의 값이 "ER" 이 들어가있는 경우만 출력하려고 합니다. 결과값 보면 Name이라는 변수의 값이 ER이 들어가있죠. 10개의 행으로 이뤄져있고요. 



3) Using the IN Operator to Select Values from a List 

특정 범위 (range)가 아니라 특정 지정된 값들 중에서 포함된걸 찾고자 할때 IN연산자를 사용합니다. 예문을 보는게 더 이해가 빠르겠죠. where jobcategory in ('PT', 'NA', 'FA') 예를 보면 jobcategory의 변수안에 들어있는 값 들 중에서 PT, NA, 또는 FA라는 값이 있는 경우, 이렇게 문자값을 설정할 수 있고요. 아니면 in (2, 4, 6) 이렇게 숫자값 2, 4, 6이 포함된 행처럼 숫자값을 설정할 수 있습니다. 아니면 not in 을 이용해서 이 값이 아닌 경우~로 설정할 수 있습니다. 



4) Using the MISSING or IS NULL Operator to Select Missing Values 

Missing Value (실측값)을 찾을때 IS MISSING 혹은 IS NULL 을 이용하면 됩니다. 


WHERE 변수이름 is missing; 이렇게 적으면 되는데요~ 

WHERE 변수이름 = .  (수치형일때)

WHERE 변수이름 = ' ' (문자값일때) 이렇게 적어도 괜찮습니다. 

하지만 IS MISSING 으로 사용하는게 더 편한 이유는 수치값 / 문자값 구분없이 다 사용할 수 있기 때문입니다. 


5) Using the LIKE Operator to Select a Pattern 

LIKE 연산자를 통해 패턴을 지정할 수 있습니다. syntax는 아래와 같고요. 바로 예문으로 들어가서 볼게요. 


대소문자 구분 하고요. 

LIKE 다음에 ' ' (quotation marks) 따옴표가 꼭 들어있어야합니다. 

그리고 _ (underscore) 나 % (percent sign) 이 따옴표 안에 들어가있어야해요. 

이때, _ 기능으로는 any single character 의 의미로, % 기능으로는 sequence of zero 또는 여러개의 캐릭터 를 의미합니다. 예문보면 바로 이해 가겠죠. 


아래 Diana, Diane, Dianna, Dianthus, Dyan이라는 값이 있고요. 오른쪽 열의 원하는 값을 출력할때 왼쪽의 Pattern을 사용하면 됩니다. 


만약 WHERE address LIKE '% P%PLACE'; 인 경우, 

처음 % 이 들어가있어서 any number 갯수 상관없이 앞에 characters가 들어가있고요. 

그 다음에 빈공간이 들어가고 

그 다음 무조건 P 대문자가 있어야하고 

그 다음 % 이 들어가있어서 갯수 상관없이 문자가 들어가있고요.

그 다음 단어 PLACE가 들어가있어야합니다. 


P로 시작하는 단어의 PLACE값이 출력하겠네요. 


# SAS 자격증, SAS Advanced, SAS Prep Guide, Advanced Programming, 자격증 

반응형

+ Recent posts