Sas: proc sql에서 having 절을 사용하는 방법


SAS의 PROC SQL 에서 HAVING 절을 사용하여 특정 조건을 충족하는 행을 필터링할 수 있습니다.

WHERE 절과 HAVING 절 사이의 미묘한 차이점에 유의하세요.

  • WHERE는 그룹화가 발생하기 전에 행을 필터링합니다.
  • HAVING은 그룹화 후 행을 필터링합니다.

다음 예에서는 HAVING 절을 실제로 사용하는 방법을 보여줍니다.

예: PROC SQL에서 HAVING 절을 사용하는 방법

SAS에 다양한 농구 선수에 대한 정보가 포함된 다음과 같은 데이터 세트가 있다고 가정합니다.

 /*create dataset*/
data my_data;
    input team $position $points;
    datalines ;
A Guard 22
A Guard 20
A Guard 30
A Forward 14
A Forward 11
B Guard 12
B Guard 22
B Forward 30
B Forward 9
B Forward 12
B Forward 25
C Guard 22
C Guard 19
C Guard 10
;
run ;

/*view dataset*/
proc print data =my_data; 

다음 코드를 사용하여 플레이어가 가드 각 팀의 플레이어가 득점한 점수 합계를 계산한 다음 결과를 필터링하여 합계 50보다 큰 팀만 표시할 수 있습니다.

 proc sql ;
    select team, sum(points) as sum_points
    from my_data
    where position='Guard'
    group by team
    having sum_points > 50 ;
quit ; 

이 코드의 정확한 작동 방식은 다음과 같습니다.

  • 먼저 SELECT를 사용하여 팀과 점수의 합을 선택했습니다.
  • 그런 다음 WHERE를 사용하여 위치가 “Guard”인 행을 필터링했습니다.
  • 다음으로 GROUP을 사용하여 팀별로 결과를 그룹화했습니다.
  • 다음으로 HAVING을 사용하여 점수 합계가 50보다 큰 팀을 필터링했습니다.

HAVING 문을 포함하지 않은 경우 이 쿼리의 결과는 다음과 같습니다.

 proc sql ;
    select team, sum(points) as sum_points
    from my_data
    where position='Guard'
    group by team;
quit ; 

참고로 B팀의 포인트 합은 50점을 넘지 않았습니다.

따라서 이전 예에서 HAVING 문을 사용했을 때 B 팀의 점수 합계가 50보다 크지 않았기 때문에 B 팀을 필터링했습니다.

추가 리소스

다음 튜토리얼에서는 SAS에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

SAS: PROC SQL에서 LIKE 연산자를 사용하는 방법
SAS: PROC SQL에서 IN 연산자를 사용하는 방법
SAS: PROC SQL에서 WHERE 연산자를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다