ウィンドウ集約関数とTeradata固有の関数の比較 - Teradata Database - Teradata Vantage NewSQL Engine - ウィンドウ集約関数とTeradata固有の関数の比較。

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/xzf1512079057909.ditamap
dita:ditavalPath
ja-JP/xzf1512079057909.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

ANSI準拠にして移植可能にするアプリケーションでは、 MAVG、CSUM、およびMSUMなどのTeradata固有の関数の使用は避けてください。

ANSI関数 Teradata関数 関係
AVG MAVG ROWS value PRECEDINGの集約グループを指定するAVGウィンドウ関数の形式は、Teradata固有の関数MAVGに相当するANSIの形式です。

ROWS value PRECEDING句は、現在行との移動合計の計算対象となる、現在行に先行する行の合計数を指定することに注意してください。集約グループ内の行の合計数はvalue + 1です。MAVG関数の場合の集約グループ内の行の合計数はwidthの値です。

AVGウィンドウ関数の場合、例えばROWS 5 PRECEDINGの集約グループを指定すると、移動平均の計算対象として、現在行とそれに先行する5つの行が使用されることになります。したがって、区分の6番目の行の移動平均は、行6、5、4、3、2、1 (つまり、全部で6行)が対象になります。

MAVG関数の場合、widthが5であれば、現在行とそれに先行する4つの行が移動平均の計算に使用されます。したがって、6番目の行の移動平均は、行6、5、4、3、2 (つまり、全部で5行)が対象になります。

SUM CSUM

MSUM

新規アプリケーションを開発する場合は、ANSI準拠のSUMウィンドウ関数を使用するようにしてください。ANSI準拠にして移植可能にするアプリケーションでは、CSUMおよびMSUMの使用は避けてください。
ここでは、SUMウィンドウ関数と、Teradata固有の関数であるCSUM関数およびMSUM関数との関係について、それぞれ説明します。
  • ORDER BY句を使い、なおかつROWS UNBOUNDED PRECEDINGを指定するSUMウィンドウ関数は、CSUMのANSI版と言えます。
  • ORDER BY句を使い、なおかつROWS value PRECEDINGを指定するSUMウィンドウ関数は、MSUMのANSI版と言えます。

    ROWS value PRECEDING句は、現在行との移動合計の計算対象となる、現在行に先行する行の合計数を指定することに注意してください。集約グループ内の行の合計数はvalue + 1です。MSUM関数の場合の集約グループ内の行の合計数はwidthの値です。

    したがって、移動合計を計算するSUMウィンドウ関数の場合、ROWS 5 PRECEDINGの集約グループを指定すると、移動合計の計算対象として、現在行とそれに先行する5つの行が使用されることになります。例えば、区分の6番目の行の移動合計は、行6、5、4、3、2、1 (つまり、全部で6行)が対象になります。

    MSUM関数の場合、widthが5であれば、現在行とそれに先行する4つの行が移動合計の計算に使用されます。したがって、例えば6番目の行の移動合計は、行6、5、4、3、2 (つまり、全部で5行)が対象になります。

    さらに、行の数がwidth個よりも少ないデータの場合、MSUMは、先行するすべての行を使って合計を計算します。MSUMは、サンプル内の行の数がwidthよりも少ない場合、nullではなく現在の合計を返します。