AVG

AVG関数は、ベクトル式を入力として取り、FLOAT64形式のベクトルとして平均を返します。

用途

AVGは、主にベクトル・セットの全体的な表現(重心など)を作成するために使用されます。自然言語処理(NLP)などのアプリケーションでは、複数のベクトルの平均を計算して、単一の重心または全体的な表現を作成できます。たとえば、文を表すには、文の各単語の埋込みの平均を求めることができます。これは、テキスト分類、ドキュメントの類似性、クラスタリングなどのタスクに使用できます。



ベクトル式を使用したAVGの結果は、NULL以外のすべての入力に対して連続してベクトル加算操作を実行してから、NULL以外の入力の合計数で除算するのと同じです。返されるベクトルは、入力と同じ数の次元を持ち、FLOAT64形式になります。式の次元数が柔軟である場合、すべての入力は各集計グループ内で同じ次元数である必要があります。

ベクトル式を入力として使用するAVG関数は、単一セットの集計またはGROUP BY句で使用できます。ROLLUPの使用もサポートされています。AVG関数は、集計操作の入力としてベクトル式を受け入れますが、現在、分析操作には適用できません。

NULLベクトルは無視され、平均ベクトルの計算時にはカウントされません。集計グループ内のすべての入力がNULLの場合、そのグループの結果はNULLになります。結果がFLOAT64の最大値をオーバーフローすると、入力ベクトル型の形式に関係なくエラーが発生します。

ベクトル入力では、DISTINCTCUBEおよびGROUPING SETSの使用はサポートされていません。また、BINARYおよびSPARSEベクトルを入力として指定することはできません。

AVG関数の完全な定義および実装については、『Oracle Database SQL言語リファレンス』を参照してください。

CREATE TABLE avg_t (v VECTOR, k1 NUMBER, k2 VARCHAR2(100));
INSERT INTO avg_t VALUES ('[2, 4, 6]', 2, 'even');
INSERT INTO avg_t VALUES ('[8, 10, 12]', 2, 'even');
INSERT INTO avg_t VALUES ('[1, 3, 5]', 3, 'odd');
INSERT INTO avg_t VALUES ('[7, 9, 11]', 3, 'odd');


SELECT AVG(v) v_avg FROM avg_t;

V_AVG
---------------------------------------------------
[4.5E+000,6.5E+000,8.5E+000]


SELECT AVG(v) v_avg, k1 FROM avg_t GROUP BY k1;

V_AVG                                    K1
---------------------------------------  ----------
[5.0E+000,7.0E+000,9.0E+000]             2
[4.0E+000,6.0E+000,8.0E+000]             3


SELECT AVG(v) v_avg FROM avg_t GROUP BY ROLLUP(k1, k2);

V_AVG
---------------------------------------------------
[5.0E+000,7.0E+000,9.0E+000]
[5.0E+000,7.0E+000,9.0E+000]
[4.0E+000,6.0E+000,8.0E+000]
[4.0E+000,6.0E+000,8.0E+000]
[4.5E+000,6.5E+000,8.5E+000]