2016-06-28 32 views
0

私がして、グループを持ち、その後、合計行のグループをまとめるためにセットをグループ化使用するTeradataのクエリを持っている:SAS Proc Sqlのグループ化セットと同等のものは何ですか?

SELECT mygroup, count(x), sum(y) 
FROM mytable 
ORDER BY GROUPING (mygroup),mygroup 
GROUP BY mygroup GROUPING SETS ((mygroup),()) 

私が作成したいと、私は今、SAS EGで同じクエリを書いていますスケジュールされたレポートは電子メールで送信されます。

SAS EGには、私がGoogle検索できるグループ化セットはありません。

私の疑問は、SAS PROC SQLでこの「サマリライン」を作成する方法、または他のSAS EGマジックで作成する方法です。

編集:ここで私は探しています出力の例は以下のとおりです。 Excel version of my desired output

それである私がこれまでSAS EGに欠け合計行を更新

:私は今、PROC集計書かれている 私は自分の目標の近くにいる。私が正しいとは思えない唯一のフィールドは、パーセンテージの差の合計です。表では、Number1とNumber2を合計する合計行を作成しましたが、合計の割合では、合計または他の集計ではなく(Number1-Number2)/ Number1の計算が必要です。これは表で可能ですか?どのようにすればいいですか?

私の現在のコード:

PROC TABULATE 
DATA=WORK.TEMP; 

VAR Number1 Number2 percentageCalc ; 
CLASS group/ ORDER=UNFORMATTED MISSING; 
CLASS date/ ORDER=UNFORMATTED MISSING; 
TABLE 
    /* ROW Statement */ 
    group*date 
    all = 'Total' , 
    /* COLUMN Statement */ 
    (Number1 * Sum={LABEL="Sum"} Number2 * Sum={LABEL="Sum"} percentageCalc * Sum={LABEL="%"})  ; 
; 

RUN; 

が私の最後の総細胞で手計算を行うにはどのような方法がありますか私は何とか手で全体の合計行を作成することができますか?

+0

'sets'をグループ化することはありませんprocのSQL​​で私は恐れている - あなたは完全な例を提供することができますあなたが作り出す必要がある点での回避策? – Altons

+0

出力に必要なコントロールに応じて、 'print'、' means'、 'report'のいずれかのSASのプロシージャの仕事のようです。 'proc print'はかなりシンプルで小計を生成することができます。しかし、私はTeradataに慣れていないので、あなたが探している出力のサンプルを見る必要があります。 –

+0

ありがとう、私は何を探しているテーブルを追加しました。私はproc printを研究します。 – Stian

答えて

1

ここに間違った終わりがあるかどうかわかりませんが、私の場合はデータをグループ化するためにPROC SQL(SAS EGのクエリウィザード)でグルーピングを行い、PROC TABULATE (SAS EGのSummary Table Wizard)を使用して、必要なものを入手します。まとめウィザードでデータをグループ化して集計することもできます。

ここにコードされています要約表タスクの

data have; 
    input date $ number1 number2 ; 
    datalines; 
    23.02.2016 2004 1951 
    16.03.2016 14999 14670 
    20.04.2016 20054 18999 
; 

PROC TABULATE 
DATA=WORK.HAVE; 
    VAR number1 number2; 
    CLASS date/ ORDER=UNFORMATTED MISSING; 
    TABLE /* Row Dimension */ 
date 
ALL={LABEL="Total (ALL)"}, 
/* Column Dimension */ 
number1* 
    Sum* 
    ALL={LABEL="Total (ALL)"} 
number2* 
    Sum* 
    ALL={LABEL="Total (ALL)"}  ; 
    ; 

RUN; 

ビュー: enter image description here

ここではその結果である:

enter image description here

+0

ありがとう、私はこれを試してみます。 proc SQLで作業中にテーブルを作成するのがベストプラクティスですか、またはプロキシテーブルで使用するためにデータを一時的に保存する方が良いでしょうか? – Stian

+1

workはデフォルトの一時ライブラリです。セッションが終了すると、そこに保存されているものはすべて消去されます。パフォーマンスの向上と比較的小さなサイズのため、通常は必須ではありませんが、作業ライブラリはSSDのように別々のIOおよび高スループットドライブ上にあるため、通常は中間結果だけに作業を使用するのが理にかなっています。 –

+0

これはWORKに投稿しました。HAVEデータセットは、他社がSASのコピーで実行できる完全なプログラムを示すために作成されています。問題の場合は、PROC TABULATEコードのWORK.HAVEへの参照を実際のデータセットの名前に置き換えます。 – Tom

関連する問題