2014年4月23日水曜日

SQLプロシジャ入門4:グループ毎に集計する【GROUP BY】





4回目はいよいよSQLの得意技であるGROUP BYによるグループ毎の集計について。



サンプルデータ
data DT1;
input A B;
cards;
1 10
1 15
1 20
1 .
2 10
2 15
;

 A 
B
  1  
  10   
  1
  15  
  1
  20 
  1
  .  
  2
  10  
  2
  15 




グループ毎に集計して出力する。[GROUP BY]
proc sql;
   select A ,
            count(B)  as _N  ,
            nmiss(B)  as _MISS  ,
            sum(B)    as _SUM  ,
            min(B)     as _MIN  ,
            max(B)    as _MAX
   from DT1
   group by A;
quit;


結果ビューア
 A 
 _N 
 _MISS 
_SUM 
_MIN 
_MAX 
  1  
  3 
  1 
  45 
  10 
  20 
  2  
  2 
  0 
  25 
  10 
  15 


解説
・まずGROUP BYにグループ化したい変数を指定する。
同じ変数をSELECTにも指定します。

・グループ毎にどの変数にどんな集計をしたいか、SQL用の集計関数をSELECTに記述する。


SQL集計関数は
  COUNT ・・・NULL以外の数
  NMISS  ・・・NULLの数
  SUM     ・・・合計
  MIN      ・・・最小値
  MAX     ・・・最大値
  AVG     ・・・平均値
などがあり、ほかにも簡単な要約統計量を求める関数がいくつかあります。




SQLプロシジャ入門記事一覧
1.変数を選択する【SELECT】
2.レコードを並べ替える【ORDER BY】
4.グループ毎に集計する【GROUP BY】

0 件のコメント:

コメントを投稿