こんにちは。 複雑なデータの結合やグループごとの集計など、データステップが苦手としている処理をSQLプロシジャが得意としているので、そこにうまく入りこませることで簡潔なプログラムを書くことができると思います。 私自身は特にグループごとの集計で便利かつスッキリしたプログラムになるのでよく使ってます。 手持ちのサンプルデータでは「これぞSQLプロシジャの強み」といういい例がぱっと思い浮かばかったですが、 例えばほんの一例として、 SASHELP.CLASSに格納されているOBS数と、年齢のパターン数を求めたいとします。 通常のデータステップや他のプロシジャを組み合わせると以下のような感じでまどろっこしさを感じます。 * OBS数を求める;
proc summary data=sashelp.class;
output out=out1;
run;
* 年齢のパターン数を求める ;
proc sort data=sashelp.class out=class (keep=age) nodupkey;
by age;
run;
proc summary data=class;
output out=out2;
run;
data out3;
merge out1 (keep=_freq_ rename=(_freq_=obs_all))
out2 (keep=_freq_ rename=(_freq_=obs_age));
run; しかしSQLプロシジャだと一発ですっきりと書けてしまいます。 * OBS数と年齢のパターン数を求める ;
proc sql;
create table out4 as
select count(*) as obs_all,
count(distinct age) as obs_age
from sashelp.class;
quit;
... View more