説明
この関数は、一連の数値ペアのサンプル共分散を計算します。集計または分析関数として使用できます。
説明
- 分析関数として使用する場合は、
OVER句を使用してウィンドウを定義し、計算を行います。これは一連の行の集合に対して計算を行い、複数の値を返します。 - 集計関数として使用する場合、この関数は一連の行の集合に対して集計計算を行い、結果は1つの値のみを返すため、
OVER句は不要です。
構文
COVAR_SAMP(expr1, expr2) [ OVER (analytic_clause) ]
パラメータの説明
パラメータ |
説明 |
|---|---|
| expr1 | 最初の数値式を指定します。数値データ型、または暗黙的に数値データ型へ変換できる値である必要があります。 |
| expr2 | 2番目の数値式を指定します。数値データ型、または暗黙的に数値データ型へ変換できる値である必要があります。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については、分析関数の説明を参照してください。 |
説明
- データベースは、最も高い数値優先順位を持つパラメータを特定し、残りのパラメータをそのデータ型に暗黙的に変換して、そのデータ型を返します。
- パラメータ
expr1とexpr2の位置は戻り値に影響しません。つまり、COVAR_POP(expr1, expr2)はCOVAR_POP(expr2, expr1)と等しくなります。 - 戻り値の計算式は次のとおりです:
(SUM(expr1 * expr2) - SUM(expr1) * SUM(expr2) / n) / (n-1)。ここで、nは (expr1,expr2) 式のペア数であり、expr1とexpr2はどちらもNULLではありません。
戻り値の型
いずれかのパラメータがNULL、またはデータが1行しかない場合は、NULL を返します。それ以外の場合は、NUMBER 型の値を返します。
例
既に作成済みのテーブル tbl1 があります。
obclient> SELECT * FROM tbl1;
+------+------+------+------+
| COL1 | COL2 | COL3 | COL4 |
+------+------+------+------+
| 1 | A1 | 8 | 12 |
| 1 | A2 | 10 | 15 |
| 1 | A3 | 11 | 16 |
| 2 | B1 | 9 | 14 |
| 2 | B2 | 10 | 15 |
| 2 | B3 | 8 | 13 |
| 2 | B4 | 11 | 16 |
| 3 | C1 | 8 | 18 |
| 3 | C2 | 9 | 16 |
| 3 | C3 | 10 | 15 |
| 3 | C4 | 11 | 12 |
| 3 | C5 | 12 | 10 |
+------+------+------+------+
12 rows in set
集計関数の例
数値列 col3 と列 col4 のサンプル共分散を計算します。
obclient> SELECT COVAR_SAMP(col3,col4) FROM tbl1;
+--------------------------------------------+
| CORR(COL3,COL4) |
+--------------------------------------------+
| -.2705008904002296868793073195758520224002 |
+--------------------------------------------+
1 row in set
分析関数の例
列 col1 でグループ化し、列 col2 でソートした上で、数値列 col3 のデータと列 col4 の累積サンプル共分散を計算します。
obclient> SELECT col1,col3,col4,
COVAR_SAMP(col3,col4) OVER(PARTITION BY col1 ORDER BY col2) "COVAR_SAMP"
FROM tbl1;
+------+------+------+-------------------------------------------+
| COL1 | COL3 | COL4 | COVAR_SAMP |
+------+------+------+-------------------------------------------+
| 1 | 8 | 12 | NULL |
| 1 | 10 | 15 | 3 |
| 1 | 11 | 16 | 3.1666666666666666666666666666666666665 |
| 2 | 9 | 14 | NULL |
| 2 | 10 | 15 | .5 |
| 2 | 8 | 13 | 1 |
| 2 | 11 | 16 | 1.66666666666666666666666666666666666667 |
| 3 | 8 | 18 | NULL |
| 3 | 9 | 16 | -1 |
| 3 | 10 | 15 | -1.5 |
| 3 | 11 | 12 | -3.16666666666666666666666666666666666667 |
| 3 | 12 | 10 | -5 |
+------+------+------+-------------------------------------------+
12 rows in set