今回はSUMMARYについて解説します。
/*正常形*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; var 請求金額; by 契約番号; output out=data3; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/ee3eede45c9bf45c1a6135d52c8664aa-1024x366.png)
![](https://how-to-business.com/wp-content/uploads/2021/09/06ab26c08aae10d53ef6fa8916bcd254-1024x357.png)
![](https://how-to-business.com/wp-content/uploads/2021/09/e67cda93e6db6ab1aae873ecf16aac1d-1024x538.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
/*out=*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2 out=data3; var 請求金額; by 契約番号; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/out1-1024x565.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- out=だとエラーになる。
/*語順入れ替え1*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; output out=data3; by 契約番号; var 請求金額; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/b7b1647967c061369df78fcb43f594a2-1024x583.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- by; var; output out=;は語順入れ替えても動作する。
/*N=*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; var 請求金額; by 契約番号; output out=data3 N=; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/N1-1024x585.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- 集計関数のうちNを実行する。
/*N=ロット数*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; var 請求金額; by 契約番号; output out=data3 N=ロット数; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/111b7895e82b2a231db792296c1e95c2-1024x523.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- 集計関数のうちNを実行する。
- Nの列名を指定する。
/*by複数指定*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号 会社コード; run;
proc summary data=data2; var 請求金額; by 契約番号 会社コード; output out=data3 MAX=; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/6875a78d24996d26d4b98347ba600bad-1024x425.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- 集計関数のうちMAXを実行する。
- byには複数指定できる。
/*varなし*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; by 契約番号; output out=data3; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/25e3ff2ddcaaac5e0619104502c4fecf-1024x299.png)
- by 契約番号を1グループとして集計する
- 出力はoutput out=
- varが無ければ_TYPE_, _FREQ_のみ。
/*byなし*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; var 請求金額; output out=data3; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/da3005ff09e906f3f032ad28172e138b-1024x295.png)
- byが無ければ、表全体を1グループとしてvar 請求金額について集計。
- 出力はoutput out=
/*drop=_TYPE_ _FREQ_*/
data data1;
契約番号="AAAAAA"; 会社コード="02"; 請求金額=4999;
output;
契約番号="AAAAAA"; 会社コード="03"; 請求金額=2000;
output;
契約番号="BBBBBB"; 会社コード="06"; 請求金額=2300;
output;
契約番号="BBBBBB"; 会社コード="04"; 請求金額=1200;
output;
契約番号="BBBBBB"; 会社コード="03"; 請求金額=4000;
output;
契約番号="CCCCCC"; 会社コード="03"; 請求金額=7777;
output;
run;
proc sort data=data1 out=data2; by 契約番号; run;
proc summary data=data2; var 請求金額; by 契約番号; output out=data3(drop=_TYPE_ _FREQ_) N=ロット数; run;
![](https://how-to-business.com/wp-content/uploads/2021/09/drop1-1024x289.png)
- by 契約番号を1グループとしてvar 請求金額について集計する
- 出力はoutput out=
- 集計関数のうちNを実行する。
- Nの列名を指定する。
- _TYPE_, _FREQ_もdropできる。