分析関数

分析関数は、行のグループに基づいて集計値を計算します。 これらは、各グループに対して複数の行を返すという点で集計関数とは異なります。 行のグループはウィンドウと呼ばれ、analytic_clauseによって定義されます。 行ごとに、行のスライディングウィンドウが定義されます。 ウィンドウは、現在の行の計算を実行するために使用される行の範囲を決定します。 ウィンドウサイズは、物理的な行数または時間などの論理的な間隔のいずれかに基づくことができます。

分析関数は、最後のORDERBYWHEREGROUPBYHAVING句は、分析関数が処理される前に完了します。 したがって、分析関数は、selectリストまたはORDERBY句にのみ使用できます。

分析関数は、累積集計、移動集計、中央集計、およびレポート集計を計算するために一般的に使用されます。

analytic_function::=

analytic_functionの説明。gifは次の

イラストの説明”analytic_function。

analytic_clause::=

analytic_clauseの説明。gifは次の

イラストの説明”analytic_clause。gif”

query_partition_clause::=

query_partition_clauseの説明。gifは次の
イラスト”query_partition_clause.gif”

order_by_clause::=

order_by_clauseの説明。gifは次の

イラストの説明”order_by_clause。gif”

windowing_clause::=

windowing_clauseの説明。gifは次の

イラストの説明”windowing_clause。gif”

この構文のセマンティクスについては、以下のセクションで説明します。

analytic_function

分析関数の名前を指定します(このセマンティクスの説明に続く分析関数のリストを参照してください)。

引数

解析関数は0から3の引数を取ります。 引数には、任意の数値データ型または暗黙的に数値データ型に変換できる数値以外のデータ型を指定できます。 Oracleは、数値の優先順位が最も高い引数を決定し、残りの引数をそのデータ型に暗黙的に変換します。 戻り値の型は、個々の関数で特に指定がない限り、そのデータ型でもあります。

も参照してください:

“Numeric Precedence” for information on numeric precedence and Table 3-10, “Implicit Type Conversion Matrix” for more information on implicit conversion

analytic_clause

Use OVERanalytic_clause to indicate that the function operates on a query result set. This clause is computed after the FROMWHEREGROUPBY, and HAVING clauses. 選択リストまたはORDERBY句でこの句を使用して分析関数を指定できます。 分析関数に基づいてクエリの結果をフィルター処理するには、これらの関数を親クエリ内にネストし、ネストされたサブクエリの結果をフィルター処理

analytic_clauseに関する注意事項:次の注意事項はanalytic_clauseに適用されます。

  • analytic_clauseOVERanalytic_clauseを指定できます。 関数の作成を参照してください。

query_partition_clause

PARTITIONBYvalue_exprquery_partition_clausemodel_column_clausesouter_join_clausePARTITIONBYキーを使用できます。照会されるオブジェクトにparallel属性があり、query_partition_clauseを使用して分析関数を指定すると、関数の計算も並列化されます。

照会されるオブジ

value_exprorder_by_clausevalue_exprで定義され、それぞれが順序シーケンスで修飾された複数のキーでパーティション内の値を順序付けできます。

各関数内で、複数の順序式を指定できます。 これは、2番目の式が最初の式の同一の値間の関係を解決できるためです。

order_by_clauseが複数の行に対して同じ値になるたびに、関数は次のように動作します:p>

  • CUME_DISTDENSE_RANKNTILEPERCENT_RANKRANKそれぞれに同じ結果を返します行の。p>

  • ROW_NUMBERorder_by_clauseORDERBYが合計順序を保証しない場合、非決定的である可能性があります。

  • 他のすべての分析関数では、結果はウィンドウの仕様に依存します。 キーワードRANGEROWSで物理ウィンドウを指定すると、結果は非決定的になります。ORDER BY句の制限事項次の制限事項がORDERBYorder_by_clauseexprSIBLINGSpositionc_aliasorder_by_clauseは、クエリまたはサブクエリ全体の順序付けに使用されたものと同じです。

  • An analytic function that uses the RANGE keyword can use multiple sort keys in its ORDERBY clause if it specifies any of the following windows:

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW. The short form of this is RANGEUNBOUNDEDPRECEDING.

    • RANGEBETWEENCURRENTROWANDUNBOUNDEDFOLLOWING

    • RANGEBETWEENCURRENTROWANDCURRENTROW

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDUNBOUNDEDFOLLOWING

    これらの四つ以外のウィンドウ境界は、分析関数のORDERBYROWキーワードで指定されたウィンドウ境界には適用されません。

ASC/DESC順序シーケンス(昇順または降順)を指定します。 ASCがデフォルトです。

NULLS FIRST|NULLS LAST nullを含む返された行を、順序付けシーケンスの最初または最後に表示するかどうかを指定します。p>

NULLSLASTNULLSFIRSTorder_by_clauseorder_by_clauseorder_by_clauseを使用します。この句の詳細については、SELECTのorder_by_clauseを参照してください。

windowing_clause

一部の分析関数では、windowing_clausewindowing_clauseを許可する関数の後にアスタリスク(*)が続きます。

ROWS|RANGEこれらのキーワードは、関数の結果を計算するために使用されるウィンドウ(行の物理的または論理的なセット)を行ごとに定義します。 この関数は、ウィンドウ内のすべての行に適用されます。 ウィンドウは、クエリ結果セットまたはパーティションを上から下に移動します。

  • ROWS物理単位(行)でウィンドウを指定します。p>

  • RANGEorder_by_clauseRANGEorder_by_clauseに式を1つだけ指定できます。 「ORDER BY句の制限事項」を参照してください。

    論理オフセットを持つ分析関数によって返される値は、常に決定論的です。 ただし、物理オフセットを持つ分析関数によって返される値は、順序式の結果が一意の順序でない限り、非決定的な結果を生成する可能性があります。 この一意の順序を実現するには、order_by_clauseに複数の列を指定する必要がある場合があります。

    の間に。.. そして、BETWEENANDANDANDBETWEENを省略して1つの終点のみを指定した場合、Oracleはそれを開始点とみなし、終点はデフォルトで現在の行になります。BETWEENを指定した場合、Oracleはそれを開始点とみなし、終点は現在の行になります。

    UNBOUNDED PRECEDINGUNBOUNDEDPRECEDINGウィンドウがパーティションの最初の行から始まることを示します。 これは開始点仕様であり、終了点仕様として使用することはできません。

    UNBOUNDED FOLLOWINGUNBOUNDEDFOLLOWINGウィンドウがパーティションの最後の行で終了することを示します。 これは終了点仕様であり、開始点仕様として使用することはできません。

    現在の行を開始ポイントとして、CURRENTROWROWRANGEvalue_exprPRECEDINGにすることはできません。

    エンドポイントとして、CURRENTROWROWRANGEvalue_exprFOLLOWINGにすることはできません。p>

    value_expr先行またはvalue_expr次のRANGEROW:p>

    • value_exprFOLLOWINGvalue_exprFOLLOWINGでなければなりません。

    • value_exprPRECEDINGvalue_exprPRECEDINGでなければなりません。時間間隔で定義された論理ウィンドウを数値形式で定義する場合は、変換関数を使用する必要がある場合があります。

    時間間隔で定義された論理

    も参照してください:数値時間を間隔に変換する方法については、NUMTOYMINTERVALとNUMTODSINTERVALを使用してください。

    指定した場合ROWS:

    • value_exprは物理オフセットです。 定数または式である必要があり、正の数値に評価する必要があります。

    • value_exprRANGE:

      • value_expr論理オフセットです。 正の数値またはintervalリテラルに評価される定数または式である必要があります。 区間リテラルについては、”リテラル”を参照してください。order_by_clauseで指定できる式は1つだけです。

      • value_exprORDERBYexprDATEDATEDATEDATEDATEデータ型。

      • If value_expr evaluates to an interval value, then the ORDERBYexpr must be a DATE data type.

      If you omit the windowing_clause entirely, then the default is RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW.

      Analytic functions are commonly used in data warehousing environments. 次の分析関数のリストでは、アスタリスク(*)が続く関数では、windowing_clauseを含む完全な構文を使用できます。/P>
      AVG*
      CORR*
      COUNT*
      COVAR_POP*
      COVAR_SAMP*
      CUME_DIST
      DENSE_RANK
      FIRST
      FIRST_VALUE*
      LAG
      LAST
      LAST_VALUE*
      LEAD
      LISTAGG
      MAX*
      MEDIAN
      MIN*
      NTH_VALUE*
      NTILE
      PERCENT_RANK
      ratio_TO_report
      REGR_(線形回帰)関数*
      ROW_number
      STDDEV*
      stddev_pop*
      stddev_samp*
      sum*
      var_POP*
      var_samp*
      分散*

      次も参照してください。

      これらの詳細については、ORACLE DATABASE data warehousing GUIDEを参照してください関数とその使用を示すシナリオのための

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です