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ステートメントを使用したとき、ポイント合計が 50 を超えていなかったため、チーム B を除外しました。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。
SAS: PROC SQL で LIKE 演算子を使用する方法
SAS: PROC SQL で IN 演算子を使用する方法
SAS: PROC SQL で WHERE 演算子を使用する方法