説明
この関数は、数値型または数値型に変換可能な式をパラメータとして平均値を求めます。集計または分析関数として使用できます。
説明
- 分析関数として使用する場合、
OVER句を使用してウィンドウを定義し、計算を行う必要があります。これは一連の行の集合に対して計算を行い、複数の値を返します。 - 集計関数として使用する場合、この関数は一連の行の集合に対して集計計算を行い、結果として1つの値しか返せません。この場合、
OVER句を追加する必要はありません。
構文
AVG([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| DISTINCT | UNIQUE | ALL | クエリ時に重複を除外するかどうか。オプションであり、デフォルト値は ALL です。
|
| expr | 計算対象の列名を指定します。列のデータ型は数値型、または数値型に変換可能な式です。数値型としては NUMBER、FLOAT、BINARY_FLOAT、または BINARY_DOUBLE が使用できます。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については分析関数の説明を参照してください。 |
注意
DISTINCTまたはUNIQUEキーワードを指定した場合、analytic_clauseにorder_by_clauseおよびwindowing_clauseを含めることはできません。
返り値
返り値は、パラメータexprのデータ型と同じです。
例
テーブル tbl1 を作成し、テストデータを挿入します。
obclient> CREATE TABLE tbl1 (col1 INT,col2 varchar(10),col3 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES (1,'a',5),(1,'b',10),(1,'c',15),
(2,'d',20),(2,'e',18),(2,'f',12),(3,'a',10),
(3,'b',15),(4,'c',15),(4,'a',8);
Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+------+------+
| COL1 | COL2 | COL3 |
+------+------+------+
| 1 | a | 5 |
| 1 | b | 10 |
| 1 | c | 15 |
| 2 | d | 20 |
| 2 | e | 18 |
| 2 | f | 12 |
| 3 | a | 10 |
| 3 | b | 15 |
| 4 | c | 15 |
| 4 | a | 8 |
+------+------+------+
10 rows in set
集計関数の例
col3 の平均値を計算します。
obclient> SELECT AVG(col3) FROM tbl1;
+-----------+
| AVG(COL3) |
+-----------+
| 12.8 |
+-----------+
1 row in set
分析関数の例
col1 でグループ化し、col2 列を昇順にソートして、col3 列の値の前後の範囲の平均値を計算します。
obclient> SELECT col1,col2,col3, AVG(col3)
OVER (PARTITION BY col1 ORDER BY col2 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS over_col2
FROM tbl1
ORDER BY col1,col2,col3;
+------+------+------+-------------------------------------------+
| COL1 | COL2 | COL3 | OVER_COL2 |
+------+------+------+-------------------------------------------+
| 1 | a | 5 | 7.5 |
| 1 | b | 10 | 10 |
| 1 | c | 15 | 12.5 |
| 2 | d | 20 | 19 |
| 2 | e | 18 | 16.66666666666666666666666666666666666667 |
| 2 | f | 12 | 15 |
| 3 | a | 10 | 12.5 |
| 3 | b | 15 | 12.5 |
| 4 | a | 8 | 11.5 |
| 4 | c | 15 | 11.5 |
+------+------+------+-------------------------------------------+
10 rows in set