カテゴリ:

集計関数 (一般)、 ウィンドウ関数の構文と使用法 (一般)

VAR_SAMP

グループ内のNULL 以外のレコードのサンプル分散を返します。グループ内のすべてのレコードが NULLの場合、 NULLが返されます。

エイリアス:

VARIANCE , VARIANCE_SAMP

構文

集計関数

VAR_SAMP( [DISTINCT] <expr1> )

ウィンドウ関数

VAR_SAMP( <expr1> ) OVER (
                         [ PARTITION BY <expr2> ]
                         [ ORDER BY <expr3> [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ <window_frame> ] ]
                         )

window_frame の構文の詳細については、 ウィンドウ関数の構文と使用法 をご参照ください。

引数

expr1

expr1 は、数値データ型のいずれかに評価されるはずです。

expr2

これは、パーティションを分割する式です。

expr3

これは、各パーティション内で並べ替える式です。

戻り値

返される値のデータ型は、 NUMBER(<精度>, <スケール>) です。スケールは、処理される値に依存します。

使用上の注意

  • 単一レコード入力の場合、 VAR_SAMP、 VARIANCE、 VARIANCE_SAMP はすべて NULLを返します。これは、単一のレコードに対して VAR_SAMP が NULL を返し、 VARIANCE が0を返すOracleの動作とは異なります。

  • VARCHAR 式が渡されると、この関数は入力を暗黙的に浮動小数点値にキャストします。キャストを実行できない場合、エラーが返されます。

  • この関数がウィンドウ関数として呼び出される場合:

    • 構文上、 DISTINCT キーワードを使うことができますが、無視されます。

    • ウィンドウフレームを指定しない場合は、以下の暗黙のウィンドウフレームが使用されます。

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

      構文、使用上の注意、例を含むウィンドウフレームの詳細については、 ウィンドウ関数の構文と使用法 をご参照ください。

次の例は、 VAR_SAMP 関数の使用方法を示しています。

テーブルを作成して入力します。

CREATE TABLE aggr (k INT, v DECIMAL(10,2), v2 DECIMAL(10, 2));

INSERT INTO aggr VALUES
  (1, 10, NULL),
  (2, 10, 11),
  (2, 20, 22),
  (2, 25, NULL),
  (2, 30, 35);

テーブルをクエリします。

SELECT k, VAR_SAMP(v), VAR_SAMP(v2)
  FROM aggr
  GROUP BY k
  ORDER BY k;
+---+---------------+----------------+
| K |   VAR_SAMP(V) |   VAR_SAMP(V2) |
|---+---------------+----------------|
| 1 |          NULL |           NULL |
| 2 | 72.9166666667 | 144.3333333333 |
+---+---------------+----------------+