Sas: proc sql での having 句の使用方法


SAS のPROC SQLHAVING句を使用すると、特定の条件を満たす行をフィルタリングできます。

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 演算子を使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です