ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

CUMSUM

CUMSUMファンクションは、時間ディメンション全体または別のディメンション全体の累積合計を計算するファンクションです。合計されるデータが1次元である場合、CUMSUMでは、一連の累積合計を1回(該当ディメンションのすべての値に対し1回)行います。データに、合計する対象のディメンション以外のディメンションがある場合、CUMSUMは、他のディメンションにあるステータス中の値の各組合せに対し別個に、一連の累積合計を行います。

戻り値

DECIMAL

構文

CUMSUM(cum-expression [STATUS] total-dim [reset-dim] [INSTAT])

パラメータ

cum-expression

値を合計する対象の数値変数または演算。たとえば、UNITSなど。

STATUS

cum-expressionが多次元の場合、CUMSUMによりファンクションの処理中に使用する一時変数が作成されます。STATUSキーワードを指定すると、一時変数のサイズの計算時に、ディメンションのデフォルト・ステータスのかわりに現行のステータスが使用されます。式のディメンションがいくつかの値に制限されており、物理的に断片化されている場合は、STATUSを指定することで、CUMSUMのパフォーマンスを向上させることができます。

結果がステータス外になる式(たとえば、LEADまたはLAGファンクションを使用した場合、または修飾データ参照を使用した場合)でCUMSUMをSTATUSキーワードとともに使用した場合、ステータス外の結果はNAとして返されます。


注意:

合計されるデータが1次元の場合にSTATUSキーワードを指定すると、エラーが発生します。

total-dim

合計の対象とする、cum-expressionのディメンション。

reset-dim

各新年の開始時など、新しいリセット・ディメンション値ごとに一連の累積合計をやり直すかどうかを指定します。リセット・ディメンションは、次のいずれかです。

  • 明示的に定義されたリレーションを介してtotal-dimに関連付けられている任意のディメンション。

  • total-dimがDAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、DAY、WEEK、MONTH、QUARTERまたはYEAR型の任意のディメンション。CUMSUMでは2つのディメンション間の暗黙的なリレーションを使用するため、それらは明示的なリレーションで関連付けられている必要はありません。「暗黙的なリレーションの変更」を参照してください。

  • total-dimによってディメンション化されたリレーション。CUMSUMでは、関連ディメンションをリセット・ディメンションとして使用しますが、これによって、リレーションが複数ある際にどのリレーションを使用するかを選択できます。

INSTAT

CUMSUMで、現行のステータスにあるtotal-dimの値のみを使用するように指定します。INSTATを指定しないと、現行のステータスにかかわらず、total-dimすべての値の合計が算出されます。「デフォルトで現行のステータスを無視するINSTAT」を参照してください。

使用上の注意

暗黙的なリレーションの変更

total-dim引数とreset-dim引数の両方にDAY、WEEK、MONTH、QUARTERまたはYEAR型を持つディメンションを指定すると、CUMSUMでは、明示的なリレーションが存在する場合にも、2つのディメンション間の暗黙的なリレーションを使用します。ただし、reset-dim引数に対しリレーションの名前を指定することで、このデフォルトの動作を無効にして、明示的なリレーションを使用できます。

デフォルトで現行のステータスを無視するINSTAT

INSTATキーワードを指定しない場合は、CUMSUMでは、合計の計算時に現行のステータスを無視します。全体を合計するディメンションがMONTHであるとします(INSTATは指定されていません)。ある月のCUMSUM合計には、それ以前の月のいくつかがステータス中でなくても、それらのすべての月の値が使用されます。リセット・ディメンションが指定されていると、ある月の合計には、先行する月のうち、リセット・ディメンションの同じ値に呼応するすべての月の値が使用されます(たとえば、同じ年内の先行するすべての月)。年の初めから当日までの合計を計算するには、リセット・ディメンションとしてYEARを指定します。

例7-56 多次元CUMSUM計算

この例では、1996年の最初の6か月間について、Atlanta地区におけるテントおよびカヌーの個数(units)の累積合計を計算します。レポートには、月ごとの個数、リセット・ディメンションとして年(year)を使用して計算した年の初めから当日までの合計数、およびリセット・ディメンションなしに先行するすべての月で計算した合計数が示されます。次の文を発行するとします。

LIMIT district TO 'Atlanta'
LIMIT product TO 'Tents' 'Canoes'
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT DOWN month units CUMSUM(units, month year) -
   CUMSUM(units, month)

次のレポートが表示されます。

DISTRICT: ATLANTA
         ------------------------PRODUCT------------------------ 
         ---------TENTS------------- ---------CANOES------------ 
               CUMSUM(UNI                   CUMSUM(UNI
                TS, MONTH CUMSUM(UNI         TS, MONTH CUMSUM(UNI
MONTH    UNITS    YEAR)   TS, MONTH)  UNITS    YEAR)   TS, MONTH)
-----  -------- --------- ---------- ------- --------- ----------
Jan96      279       279      5,999      281       281      5,162
Feb96      305       584      6,304      309       590      5,471
Mar96      356       940      6,660      386       976      5,857
Apr96      537     1,477      7,197      546     1,522      6,403
May96      646     2,123      7,843      525     2,047      6,928
Jun96      760     2,883      8,603      608     2,655      7,536

CUMSUM(UNITS, MONTH)の合計には、最初の月JAN95以降のすべての月の値が含まれます。CUMSUM(UNITS, MONTH YEAR)の合計には、JAN96以降の値のみが含まれます。

例7-57 四半期でのリセット

この例では、同じ製品および地区について、1996年1年間の累積合計を計算します。リセット・ディメンションとしてquarterが指定されているため、合計は各四半期の初めで累積が開始されます。Jan96Apr96Jul96およびOct96の累積合計は、これらの月の個数と同じです。次の文を発行するとします。

LIMIT district TO 'Atlanta'
LIMIT product TO 'Tents' 'Canoes'
limit month TO year 'Yr96'
REPORT DOWN month units CUMSUM(units, month quarter)

次のレポートが表示されます。

DISTRICT: ATLANTA
             ------------------PRODUCT------------------
             --------TENTS-------- -------CANOES--------
                          CUMSUM(UNI          CUMSUM(UNI
                           TS, MONTH           TS, MONTH
MONTH           UNITS     QUARTER)    UNITS     QUARTER)
------------ ---------- ---------- ---------- ----------
Jan96             279        279        281        281
Feb96             305        584        309        590
Mar96             356        940        386        976
Apr96             537        537        546        546
May96             646      1,183        525      1,071
Jun96             760      1,943        608      1,679
Jul96             852        852        626        626
Aug96             730      1,582        528      1,154
Sep96             620      2,202        520      1,674
Oct96             554        554        339        339
Nov96             380        934        309        648
Dec96             284      1,218        288        936