AVG
AVG
関数は、ベクトル式を入力として取り、FLOAT64
形式のベクトルとして平均を返します。
用途
AVG
は、主にベクトル・セットの全体的な表現(重心など)を作成するために使用されます。自然言語処理(NLP)などのアプリケーションでは、複数のベクトルの平均を計算して、単一の重心または全体的な表現を作成できます。たとえば、文を表すには、文の各単語の埋込みの平均を求めることができます。これは、テキスト分類、ドキュメントの類似性、クラスタリングなどのタスクに使用できます。
ベクトル式を使用したAVG
の結果は、NULL
以外のすべての入力に対して連続してベクトル加算操作を実行してから、NULL
以外の入力の合計数で除算するのと同じです。返されるベクトルは、入力と同じ数の次元を持ち、FLOAT64
形式になります。式の次元数が柔軟である場合、すべての入力は各集計グループ内で同じ次元数である必要があります。
ベクトル式を入力として使用するAVG
関数は、単一セットの集計またはGROUP BY
句で使用できます。ROLLUP
の使用もサポートされています。AVG
関数は、集計操作の入力としてベクトル式を受け入れますが、現在、分析操作には適用できません。
NULL
ベクトルは無視され、平均ベクトルの計算時にはカウントされません。集計グループ内のすべての入力がNULL
の場合、そのグループの結果はNULL
になります。結果がFLOAT64
の最大値をオーバーフローすると、入力ベクトル型の形式に関係なくエラーが発生します。
ベクトル入力では、DISTINCT
、CUBE
および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]
親トピック: 集計関数