分析関数
分析関数は行のグループに基づいて集計値を計算します。集計関数との違いは、グループごとに複数の行を戻す点です。この行のグループはウィンドウと呼ばれ、analytic_clauseで定義されます。
分析関数は、問合せで最後に実行される演算(最後のORDER BY句を除く)の集合です。すべての結合、WHERE句、GROUP BY句およびHAVING句は、分析関数が処理される前に実行されます。最後のORDER BY句は、分析関数の結果を順序変更するために使用されます。分析関数は、問合せまたは副問合せの選択リスト、およびORDER BY句に指定できます。
分析関数を使用すると、問合せの結果セットをパーティションと呼ばれる行グループに分割できます。列または式でパーティションを定義できます。問合せ結果セットは、すべての行を持つ1つのパーティション、少数の大きなパーティション、またはそれぞれが数行しか持たない多数の小さなパーティションに分割可能です。
パーティションの行ごとに、スライディング・ウィンドウを定義できます。このウィンドウで、カレント行の計算に使用される行の範囲が決まります。ウィンドウ・サイズは、行の物理的な数に基づきます。ウィンドウには開始行および終了行があり、片方の端または両方の端で移動できます。たとえば、累積SUM関数を定義したウィンドウには、パーティションの最後の行に固定された開始行が含まれ、終了行は開始点からパーティションの最後の行までスライドします。反対に、移動平均を定義したウィンドウには開始点と終了点の両方のスライドが含まれます。
ウィンドウは、パーティションのすべての行、またはパーティション内の1行と同じ大きさに設定できます。
各関数には、複数の順序式を指定できます。これは、2番目の式が最初の式にある同一値との間の関連性を変換できるため、値をランク付けする関数を使用する場合に有効です。
通常、分析ファンクションは、累積集計、移動集計、センター集計およびレポート集計の実行に使用されます。
制限:
-
分析関数は、マテリアライズド・ビューではサポートされていません。
分析関数のリストは、次のとおりです。アスタリスク(*)付きの関数は、WindowingClauseをサポートしています。
SQL構文
分析関数の構文:
AnalyticFunctionName ([arguments]) OVER ([AnalyticClause]) AnalyticClause::= QueryPartitionClause [ORDER BY OrderByClause [,...] [WindowingClause]] | ORDER BY OrderByClause [,...] [WindowingClause] QueryPartitionClause::= PARTITION BY {Expression[,Expression]... | (Expression[,Expression]...) } OrderByClause::=Expression[ASC|DESC] [NULLS {FIRST|LAST}] WindowingClause::= ROWS { BETWEEN StartPoint AND EndPoint | StartPoint } StartPoint::= UNBOUNDED PRECEDING | CURRENT ROW |PosNumConstantExpr{ PRECEDING | FOLLOWING } EndPoint::= UNBOUNDED FOLLOWING | CURRENT ROW |PosNumConstantExpr{ PRECEDING | FOLLOWING }
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析関数の名前。 |
|
|
分析関数の引数。引数の数は分析関数によって異なります。関数に対する引数の詳細は、特定の関数を参照してください。 |
|
|
関数が分析関数であることを示します。この句は、
|
|
|
同じまたは異なる
|
|
|
各キーが 分析関数は、この句で指定された順序で動作します。ただし、この句は、結果の順序は保証しません。最終結果の順序を保証するには、問合せの
|
|
|
順序付けシーケンス(昇順または降順)を指定します。デフォルトは 句はオプションです。 |
|
|
句はオプションです。 |
|
|
句は、
分析関数が戻す値は、順序付けシーケンスの結果が一意の順序でなければ非決定的な結果を生成することがあります。この場合、
|
|
|
|
|
|
有効な値は、
|
|
|
有効な値は、
|
|
|
終了点として使用することはできません。 |
|
|
開始点として使用することはできません。 |
|
|
|
|
|
終了点の
|