SAS Base, A00-211 Crambible 

SAS 베이스 자격증


QUESTION NO: 86


Given the data set WORK.EMPDATA: 


Employee_ 


Manager_ID      Job_Title           Department            ID (4개 변수) 

120101              Director            Sales Management    120261 

120102       Sales Manager       Sales Management    120101 

120103       Sales Manager II    Sales Management    120101 

120104 Administration Manager Administration           120101 

120105         Secretary I             Administration            120101


Which one of the following where statements would display observations with job titles containing the word 'Manager'?


A. wheresubstr(Job_Title,(length(Job_Title)-6))='Manager'; 

B. whereupcase(scan(Job_Title,-1,' '))='MANAGER';
C. whereJob_Title='% Manager ';
D. whereJob_Title like '%Manager%';




문제풀이 

A. wheresubstr(Job_Title,(length(Job_Title)-6))='Manager'; 


length(Job_Title) 우선 Job_Title의 length을 살펴보기 위해 가장 긴 단어를 보니 Administration Manager고요. 이 길이가 21인데요. Job_Title의 변수 길이는 일단 21은 되어야 되겠죠. 만약 이것보다 짧으면 글자가 짤리니까요. 


length(Job_Title)-6 21-6 = 15 

즉, wheresubstr(Job_Title, 15) 라고 되겠죠. 


substr는 Job_Title에서 15번째부터 값을 가져와라는 뜻입니다. 


예를들어 Director경우 15보다 작기때문에 15번째부터 값을 가져와야하니까 결국 공백을 가져오게되겠죠. Sales Manger경우 Sales Manager 역시 15번째부터 가져와야하니까 결국 공백을 가져오고요. 



B. whereupcase(scan(Job_Title,-1,' '))='MANAGER';

scan(Job_Title, -1, '') Job_Title이라는 변수를 공백으로 구분했을때 뒤에서 첫번째 덩어리르 가져오란 얘기입니다. 


예를들어 Director 경우, 변수를 공백을 구분하면 한덩어리가 되겠죠. 뒤에서 첫번째꺼를 결국 Director가 되겠습니다. Sales Manager경우 공백으로 구분하면 두 덩어리가 되었으니까 뒤에서 첫번째꺼 Manager가 되겠네요. Sales Manager II 경우 공백으로 구분하면 세 덩어리가 되니까 뒤에서 첫번째꺼 II가 되겠네요. 얘네는 Manger랑 비교할 수 없어서 답이 안되겠죠. 


upcase는 소문자를 찾아도 대문자로 바꿔주는 역할을 합니다. 



C&D는 %라는 와일드카드를 사용하고 있는데요. 어떤 문자의 앞 혹은 뒤에 어떤 문자가 와도 괜찮다라는걸 의미하기 위해 % 라는걸 사용합니다. 따라서 %Manager% 가 되겠죠. 


참고로 C, '% Manager ' : Manager앞에 아무거나 와도 상관 없고요. 대신 뒤에는 공백이 있어야합니다. 


Answer: D 


반응형

+ Recent posts