CREATE AGGREGATE - 新しい集約関数を定義します

SYNOPSIS

 

AGGREGATE CREATE 
    BASETYPE = はinput_data_type
    SFUNC = sfunc
    STYPE = ただし、state_data_type 
    〔、FINALFUNC = ffunc ] 
    [、INITCOND = initial_condition ] 

説明説明

CREATE AGGREGATEは、新しい集約関数を定義します。そのような分(整数)と平均(倍精度)等の基本型のためのいくつかの集約関数は、基本ソフトウェア・パッケージに含まれています。あなたは、新しいタイプまたは集約関数を提供していない必要性を定義する必要がある場合は、CREATE AGGREGATEは、私たちが必要とする機能を提供するために使用することができます。

モデルの名前(例えば、AGGREGATE myschema.myaggを作成...)与えられた場合には、集約関数は、指定したモードで作成されます。それ以外の場合は、現在のモードで作成されています。

集計は、関数名とそのデータ型識別子が入力されます。二つの異なる凝集処理で同じモードで入力されたデータならば、それらは同じ名前を持つことができます。集計入力データ型の機能とは、すべての名前と異なる種類の通常の関数の同じモードを入力する必要があります。

集約関数は、1つのまたは2つの通常の関数である:状態遷移関数sfuncと省略可能な最終計算関数ffuncこれらが使用されます。

 

sfunc(内部状態、次のデータ項目)--->次の内部状態
 ffunc(内部状態)--->集計値

PostgreSQLはの一時変数のSTYPEを作成します。これは、集約の現在の内部状態を保存します。入力データの各エントリに対して、新しい呼状態遷移関数の内部状態値のカウント値です。すべてのデータが処理された後、最終的な関数呼び出しが集計を計算する値を返します。最終関数がない場合は、その後、終了状態値が返されます。

集約関数は、初期状態、すなわち、内部状態値の初期値が使用さを提供してもよいです。この値は、データベースに格納されているテキストフィールドのタイプとして使用されているが、彼らは一定の状態値のデータ型の有効な外部表現でなければなりません。いいえ状態ならば、状態値はNULLに初期化されます。

状態遷移関数が「厳格」と宣言された場合、NULLがコールを入力して使用することはできません。このとき、このような伝達関数を持つ凝集現象を実装するために、以下のように。NULL値の入力が(この関数を呼び出すことはありませんし、以前の状態値が保持されます)は無視されます。初期状態値がNULLである場合、この状態値は、最初の非NULL値に置き換えられ、状態遷移関数は、第2の入力、非NULL値で始まる呼び出されます。私たちは最高のような凝集体を実装するので、より簡単にやってみましょう。なお、この動作時にのみstate_typeは、それが明らかにされたときと同じはinput_data_type。型が異なる場合は、非NULL初期条件を提供したり、非strice遷移関数を使用する必要があります。

状態遷移関数は、(厳密な)厳密でない場合、それは凝集著者が集約内のNULL値に対する完全な制御を有することを可能にする、無条件に各入力値を要求し、NULL入力と自体のNULL遷移値に対処しなければなりません。

代わりに、自動的に出力NULL結果、最終的な機能は、最終状態が呼び出されない場合、値がNULLである場合、「厳密」として定義されている場合。(もちろん、これは厳密な機能の正常な動作である。)いずれの場合も、最終的な関数はNULLを返すオプションを有します。例えば、ゼロ入力レコードにおける平均最終関数はNULLを返します。

パラメータパラメータ

作成する集約関数の名前(必要に応じてスキーマの変更)。
input_data_type
集約関数に存在する基本的なデータ型。このパラメータは、「ANY」として指定することができ、入力タイプを収集するためにチェックしないでください。(例えば、COUNT(*))。
sfunc
関数名に、各入力データを処理するためのソースデータのステータスカラム。これは通常、最初のパラメータの2パラメータの関数であり、第2のパラメータただし、state_data_type入力はinput_data_typeある。また、集計チェックデータ入力のために、この関数は引数はstate_data_typeのタイプの引数を受け付けます。いずれの場合も、この関数は、引数はstate_data_typeの型の値を返す必要があります。この関数は、現在の状態値と現在の入力データ項目を受け取り、次の状態値を返します。
ただし、state_data_type
データ型凝集状態値。
ffunc
最終的に機能した後、すべての入力/フィールドの呼び出しに変換します。これは、凝集を結果。この関数は、引数はstate_data_typeの種類の一つの引数を受け入れなければなりません。集約された出力データ型は、関数のこのタイプのために定義されています。凝集の結果としての状態値を使用して、集約結果をffunc指定、および出力タイプはstate_data_typeになりなりません。
初期状態
初期値設定状態(値)。これは、テキスト引数はstate_data_type許容定数値のデータ型である必要があります。指定しない場合、状態値はNULLに開始します。

CREATE AGGREGATEのパラメータは、上に示した順序に限らず、任意の順序で書き込むことができます。 

おすすめ

転載: www.cnblogs.com/fanweisheng/p/11077020.html