jp分析ファンクション分析ファンクション分析ファンクションは、行のグループに基づいて集計値を計算します。各グループに対して複数の行を戻す点で、集計ファンクションと異なります。行のグループをウィンドウといい、analytic_clauseで定義されます。各行に対して、行のスライディング・ウィンドウが定義されます。このウィンドウによって、カレント行の計算に使用される行の範囲が決定されます。ウィンドウの大きさは、行の物理数値または時間などのロジカル・インターバルに基づきます。BY句を除く)の集合です。BYおよびHAVING句は、分析ファンクションが処理される前に実行されます。BY句のみに指定できます。センター集計およびレポート集計の実行に使用されます。}analytic_function分析ファンクションの名前を指定します(セマンティクスの説明の後に示す分析ファンクションのリストを参照)。分析ファンクションには引数を0~3個指定します。引数には、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を指定できます。Oracleは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換します。個々のファンクションに特に指定がないかぎり、戻り型もその引数のデータ型となります。参照:数値の優先順位の詳細は、「数値の優先順位」を参照してください。暗黙的な変換の詳細は、表2-10「暗黙的な型変換のマトリックス」を参照してください。analytic_clause句は、ファンクションが問合せ結果セットを操作することを示します。BYおよびHAVING句の後に計算されます。BY句に分析ファンクションを指定できます。分析ファンクションに基づいて、問合せの結果をフィルタするには、これらのファンクションを親問合せ内でネストした後、ネストされた副問合せの結果をフィルタします。analytic_clauseの注意事項:analytic_clauseには、次の注意事項があります。analytic_clauseのどの部分にも、分析ファンクションを指定できません。分析ファンクションはネストできません。副問合せで分析ファンクションを指定して、別の分析ファンクションを計算することはできます。analytic_clauseには、組込み分析ファンクションと同様に、ユーザー定義の分析ファンクションを指定できます。FUNCTION」を参照してください。BY句を使用すると、1つ以上のvalue_exprに基づいて、問合せ結果セットをグループに分割できます。この句を省略すると、ファンクションは問合せ結果セットのすべての行を単一のグループとして扱います。分析ファンクションでquery_partition_clauseを使用するには、構文の上位ブランチ(カッコなし)を使用します。この句をモデルの問合せ(model_column_clauses内)またはパーティション化された外部結合(outer_join_clause内)で使用するには、構文の下位ブランチ(カッコ付き)を使用します。BYキーで、同じ問合せに複数の分析ファンクションを指定できます。問い合せているオブジェクトにパラレル属性があり、query_partition_clauseで分析ファンクションを指定する場合は、ファンクションの計算もパラレル化されます。ファンクション、ファンクション式、またはこれらのいずれかを含む式です。order_by_clauseorder_by_clauseを使用すると、パーティション内でのデータの順序付け方法を指定できます。PERCENTILE_CONTおよび(単一キーのみを適用する)PERCENTILE_DISC以外の分析ファンクションでは、各キーがvalue_exprで定義され、順序付けシーケンスで修飾された複数キーのパーティションの値を順序付けできます。各ファンクションには、複数の順序式を指定できます。これは、2番目の式が最初の式にある同一値との間の関連性を変換できるため、値をランク付けするファンクションを使用する場合に特に有効です。order_by_clauseの結果が複数行の個々の値である場合、ファンクションは各行の同じ値を戻します。この動作の詳細は、「SUM」の分析例を参照してください。BY句には次の制限事項があります。order_by_clauseを分析ファンクションで使用する場合、式(expr)が必要です。SIBLINGSキーワードは無効です(これは、階層問合せでのみ有効です)。位置(position)および列別名(c_alias)も無効です。それ以外で使用する場合、このorder_by_clauseは、問合せまたは副問合せ全体を順序付ける場合に使用するものと同じです。BY句で複数のソート・キーを使用できます。PRECEDINGです。FOLLOWINGです。BY句でソート・キーを1つしか持てません。この制限事項は、ROWキーワードで指定したウィンドウ境界には適用されません。DESC順序付けシーケンス(昇順または降順)を指定します。デフォルトはASCです。LASTNULL値を含む戻された行が順序の最初にくるか、最後にくるかを指定します。FIRSTは降順のデフォルトです。分析ファンクションは、常に、ファンクションのorder_by_clauseで指定された順序で行を操作します。ファンクションのorder_by_clauseは結果の順序を保証しません。最終結果の順序を保証するには、問合せのorder_by_clauseを使用してください。参照:この句の詳細は、「SELECT」の「order_by_clause」を参照してください。windowing_clause一部の分析ファンクションでは、windowing_clauseを使用できます。7-16ページに示す分析ファンクションのリストでは、windowing_clauseを使用できるファンクションにアスタリスク(*)が付いています。RANGEこれらのキーワードは、各行に対して、ファンクションの結果の計算に使用されるウィンドウ(行の物理集合または論理集合)を定義します。ファンクションは、ウィンドウのすべての行に適用されます。ウィンドウは、問合せ結果セット内またはパーティションの上から下まで移動します。ROWSは、物理単位(行)でウィンドウを指定します。RANGEは、論理オフセットとしてウィンドウを指定します。order_by_clauseを指定しないと、この句を指定できません。RANGE句で定義したウィンドウ境界には、order_by_clauseで指定できる式が1つのみのものもあります。BY句の制限事項:」を参照してください。分析ファンクションが論理オフセットで戻す値は、常に決定的なものです。分析ファンクションが物理オフセットで戻す値は、順序式の結果が一意の順序にならないかぎり、非決定的な結果を生成することがあります。order_by_clauseに複数の列を指定して、結果の順序を一意にする必要があります。AND句を使用すると、ウィンドウにスタート・ポイントおよびエンド・ポイントを指定できます。最初の式(ANDの前)はスタート・ポイントを定義し、2番目の式(ANDの後)はエンド・ポイントを定義します。BETWEENを省略してエンド・ポイントを1つのみ指定すると、Oracleはそれをスタート・ポイントとみなし、デフォルトでカレント行をエンド・ポイントに指定します。PRECEDINGを指定すると、パーティションの最初の行で、ウィンドウが開始します。これはスタート・ポイントの指定で、エンド・ポイントの指定としては使用できません。FOLLOWINGを指定すると、パーティションの最後の行で、ウィンドウが終了します。これはエンド・ポイントの指定で、スタート・ポイントの指定としては使用できません。ROWスタート・ポイントとして、ウィンドウがカレント行または値(それぞれROWまたはRANGEを指定したかどうかに基づく)で開始することを指定します。PRECEDINGをエンド・ポイントにできません。エンド・ポイントとして、ウィンドウがカレント行または値(それぞれROWまたはRANGEを明示的に指定したかどうかに基づく)で終了することを指定します。FOLLOWINGをスタート・ポイントにできません。FOLLOWINGRANGEまたはROWに対して、次のことがいえます。FOLLOWINGである必要があります。PRECEDINGである必要があります。数値形式の時間間隔で定義されている論理ウィンドウを定義する場合、変換ファンクションを使用する必要があります。参照:数値時間から間隔への変換の詳細は、「NUMTOYMINTERVAL」および「NUMTODSINTERVAL」を参照してください。ROWSを指定した場合、次のことがいえます。value_exprは物理オフセットになります。これは定数または式であり、正数値に評価する必要があります。value_exprがスタート・ポイントの一部の場合、エンド・ポイントの前にある行に評価する必要があります。RANGEを指定した場合、次のことがいえます。value_exprは論理オフセットになります。これは、正数値または期間リテラルに評価する定数または式である必要があります。期間リテラルの詳細は、「リテラル」を参照してください。order_by_clauseには、式を1つのみ指定できます。exprは数値データ型またはDATEデータ型である必要があります。exprはDATEデータ型である必要があります。分析ファンクションは、通常、データ・ウェアハウス環境で使用されます。次に示す分析ファンクションのリストでは、windowing_clauseを含む完全な構文を使用できるファンクションには、アスタリスク(*)が付いています。Databaseデータ・ウェアハウス・ガイド』の「分析計算およびレポート」を参照してください。構文の一部(連結を示す)です。組込みSQLファンクションまたはユーザー定義ファンクションを式として使用できます。注意:太字で示されている外側の大カッコは構文の一部です。オプションを表すものではありません。1行から1列のみ戻す式として使用できます。!=、^=および<>は不等性テストを表します。!=、^=および<>は不等性テストを表します。