17.10 - ウィンドウ集約関数とTeradata固有の関数の比較 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

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ではなく現在の合計を返します。