Chapter 2. Performing Advanced Queries Using PROC SQL (6) - Grouping & Having   

Selecting Groups By Using the HAVING Clause 

그룹화하는거는 지난 포스팅에 다뤘고요. (http://statnmath.tistory.com/276)

왼쪽처럼 결과값이 있으면 AvgSalary가 56000 이상의 값만 보여주는건 어떻게 하는지 알아보겠습니다. 그래서 원하는 결과값이 오른쪽 그림처럼 되는거죠. 


    


그룹화(Grouping)된 상태에서 조건을 설정할 경우 HAVING 구절을 사용합니다. 

아래 코드 보면, sasuser라이브러리에 payrollmaster데이터를 가지고 jobcode와 salary 값은 평균값으로 AvgSalary라는 변수이름으로 저장하고요. 이때 포맷은 달러사인으로 소숫점자리 두자리까지 표시합니다. 이때 jobcode는 그룹화하고 salary의 평균값이 56000만 보여지도록 하라는 내용입니다. 그래서 HAVING은 마치 필터역할을 한다고 보시면 돼요. 그래서 HAVING구절을 만족하는 그룹만 보여지게 됩니다. 


그럼 WHERE구와 다른 점은 뭐냐~!! 하면~ 

WHERE구는 각 개별의 행(row)에 해당하고요. HAVING 은 그룹별로 조건을 살펴보게 됩니다. 


만약 HAVING구절은 있는데 GROUP BY가 생략된 경우, 데이터 전체를 하나의 그룹으로 판단해서 결과값이 나오게 됩니다.그래서 평균값이 56000이상이면 전체 행이 테이블로 나오게 되고요. 평균값이 56000이하면 해당하는 값이 아니라서 아무런 행(row)이 나타나지 않게 됩니다.  



# SAS 자격증, SAS Advanced, SAS Advanced programming, SAS prep guide, 자격증 

반응형

+ Recent posts