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 연산자를 사용하는 방법