説明
この関数は、数値型または数値型に変換可能な式をパラメータとして取り、平均値を計算します。集約関数または分析関数として使用できます。
説明
- 分析関数として使用する場合は、
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