2016年8月18日木曜日

SQLプロシジャ内でもSAS関数が使える



MIN、MAX、PUT、などなどデータステップで使っているSAS関数は、SQLプロシジャでも普通に使えます。

  • 一部の関数または関数の機能が使えない場合もある
  • パススルー機能によってDBMSに送信するクエリにも使えない
  • 引数はANSI SQL standard guidelineおよびISO SQL standard guidelineに従う必要がある



* サンプルデータ作成 ;
data DT1;
input A B C;
cards;
1 2 0
2 4 3
;
run;

* SQLプロシジャでSAS関数を利用する ;
proc sql;
   select min(A,B,C) as MINVAL
   from DT1;
quit;

上記ではSASのMIN関数を使ってレコードごとに変数A,B,Cの中の最小値を求めています。


では以下の例はどうでしょうか。
proc sql;
   select min(A) as MINVAL
   from DT1;
quit;

ここで使っているMIN関数は、SQLの集計関数です。
(つまり変数Aの全レコード中の最小値を求めています。)

MIN、MAX、SUMなど、SAS関数とSQL集計関数で同じ名前を持つものがある場合、
引数の数でどちらの関数かを判断しています。

たとえば、
MIN(A,B,C)」 というように引数を複数かけば、SAS関数として解釈し、
MIN(A)」 というように引数が1つであれば、SQL集計関数として解釈されます。


まさにSASとSQLのいいとこどりって感じですね。


関連記事
SQLプロシジャでデータセットオプションを使うメリット。


0 件のコメント:

コメントを投稿