集計関数を使用して、一連のデータに対してサマリー計算を実行できます。 このトピックでは、集計関数の構文について説明し、AnalyticDB for MySQLで集計関数を使用する方法の例を示します。
AnalyticDB for MySQLは、次の集計関数をサポートしています。
ARBITRARY: 一連のデータから値をランダムに返します。
AVG: 一連の数値の平均値を計算します。
BIT_AND: 入力値のすべてのビットに対するビット単位のAND演算の結果を返します。
BIT_OR: 入力値のすべてのビットに対するビット単位のOR演算の結果を返します。
BIT_XOR: 入力値のすべてのビットに対するビット単位のXOR演算の結果を返します。
COUNT: SELECTクエリによって返されるレコードの数をカウントします。
MAX: 一連の数値の最大値を計算します。
MIN: 数値のセットの最小値を計算します。
STD、STDDEV、またはSTDDEV_POP: すべての入力値の母集団標準偏差を返します。
STDDEV_SAMP: 整数、小数、または浮動小数点数のセットのサンプル標準偏差を返します。
SUM: すべての入力値の合計を計算します。
VARIANCE (非標準SQL関数): 整数、小数、または浮動小数点数の集合の母集団標準分散を返します。
VAR_POP (標準SQL関数): 整数、小数、または浮動小数点数の集合の母集団標準分散を返します。
VAR_SAMP: 整数、小数、または浮動小数点数のセットのサンプル分散を返します。
GROUP_CONCAT: グループからの連結値の文字列結果を返します。 値は、
GROUP BY
句の返された結果から取得されます。
このトピックでは、testtable
という名前のテーブルが、GROUP_CONCAT()
関数を除くすべての集計関数で使用されます。 次のステートメントを使用して、テーブルを作成します。
CREATE TABLE testtable(a INT) DISTRIBUTED BY HASH(a);
次の文を使用して、テストデータをtesttable
テーブルに挿入します。
INSERT INTO testtable VALUES (1),(2),(3);
ARBITRARY
arbitrary(x)
説明: この関数は、一連のデータからランダムに値を返します。
入力値のデータ型: すべてのデータ型。
戻り値のデータ型: この関数の入力値のデータ型と一致します。
例:
SELECT arbitrary(a) FROM testtable;
次の情報が返されます。
+--------------+ | arbitrary(a) | +--------------+ | 2 | +--------------+
AVG
avg(x)
説明: この関数は、一連の数値の平均値を計算します。
入力値のデータ型: BIGINT、DOUBLE、またはFLOAT。
戻り値のデータ型: DOUBLE。
例:
SELECT avg(a) FROM testtable;
次の情報が返されます。
+--------+ | avg(a) | +--------+ | 2.0 | +--------+
ビットアンド
bit_and(x)
説明: この関数は、入力値のすべてのビットに対するビット単位の
AND
演算の結果を返します。入力値のデータ型: BIGINT、DOUBLE、またはFLOAT。
戻り値のデータ型: BIGINT。
例:
SELECT bit_and(a) FROM testtable;
次の情報が返されます。
+------------+ | bit_and(a) | +------------+ | 0 | +------------+
BIT_OR
bit_or(x)
説明: この関数は、入力値のすべてのビットに対するビット単位の
OR
演算の結果を返します。入力値のデータ型: BIGINT、DOUBLE、またはFLOAT。
戻り値のデータ型: BIGINT。
例:
SELECT bit_or(a) FROM testtable;
次の情報が返されます。
+-----------+ | bit_or(a) | +-----------+ | 3 | +-----------+
BIT_XOR
bit_xor(x)
説明: この関数は、入力値のすべてのビットに対するビット単位のXOR演算の結果を返します。
入力値のデータ型: BIGINT、DOUBLE、またはFLOAT。
戻り値のデータ型: BIGINT。
例:
SELECT bit_xor(a) FROM testtable;
次の情報が返されます。
+------------+ | bit_xor(a) | +------------+ | 0 | +------------+
COUNT
count([distinct|all] x)
説明: この関数は、SELECTクエリによって返されるレコードの数をカウントします。
説明説明:
distinct
およびall
は、カウント中に重複レコードを削除するかどうかを指定します。 デフォルト値はall
で、すべてのレコードがカウントされることを指定します。distinct
を指定すると、一意の値を持つレコードのみがカウントされます。入力値のデータ型: NUMERIC、STRING、またはBOOLEAN。
戻り値のデータ型: BIGINT。
例
testtable
テーブルの列で値が一意であるレコードの数を数えます。SELECT count(distinct a) FROM testtable;
次の情報が返されます。
+-------------------+ | count(distinct a) | +-------------------+ | 3 | +-------------------+
a列の値に基づいて、
testtable
テーブルのすべてのレコードの数を数えます。SELECT count(all a) FROM testtable;
次の情報が返されます。
+--------------+ | count(all a) | +--------------+ | 3 | +--------------+
MAX
max(x)
説明: この関数は、一連の数値の最大値を計算します。
入力値のデータ型: すべてのデータ型。 ただし、BOOLEAN型のデータは計算に含まれません。
説明特定の列の値が
NULL
の場合、この値を含む行は計算に含まれません。戻り値のデータ型: この関数の入力値のデータ型と一致します。
例:
SELECT max(a) FROM testtable;
次の情報が返されます。
+--------+ | max(a) | +--------+ | 3 | +--------+
MIN
min(value x)
説明: この関数は、一連の数値の最小値を計算します。
入力値のデータ型: すべてのデータ型。 ただし、BOOLEAN型のデータは計算に含まれません。
説明特定の列の値が
NULL
の場合、この値を含む行は計算に含まれません。戻り値のデータ型: この関数の入力値のデータ型と一致します。
例:
SELECT min(a) FROM testtable;
次の情報が返されます。
+--------+ | min(a) | +--------+ | 1 | +--------+
STD、STDDEV、またはSTDDEV_POP
std(x)
stddev(x)
stddev_pop(x)
説明: この関数は、すべての入力値の母集団標準偏差を返します。
入力値のデータ型: BIGINTまたはDOUBLE。
戻り値のデータ型: DOUBLE。
例
例 1:
SELECT std(a) FROM testtable;
次の情報が返されます。
+-------------------+ | std(a) | +-------------------+ | 0.816496580927726 | +-------------------+
例 2:
SELECT stddev_pop(a) FROM testtable;
次の情報が返されます。
+-------------------+ | stddev_pop(a) | +-------------------+ | 0.816496580927726 | +-------------------+
STDDEV_SAMP
stddev_samp(x)
説明: この関数は、整数、小数、または浮動小数点数のセットのサンプル標準偏差を返します。
入力値のデータ型: BIGINTまたはDOUBLE。
戻り値のデータ型: DOUBLE。
例:
SELECT stddev_samp(a) FROM testtable;
次の情報が返されます。
+----------------+ | stddev_samp(a) | +----------------+ | 1.0 | +----------------+
SUM
sum(x)
説明: この関数は、すべての入力値の合計を計算します。
入力値のデータ型: BIGINT、DOUBLE、またはFLOAT。
戻り値のデータ型: BIGINT。
例:
SELECT sum(a) FROM testtable;
次の情報が返されます。
+--------+ | sum(a) | +--------+ | 6 | +--------+
バリエーション
variance(x)
説明: この関数は、整数、小数、または浮動小数点数の集合の母集団標準分散を返します。
説明VARIANCE()
関数は、NULL値を持つ行を無視します。 セット内のすべての値がNULLの場合、VARIANCE()
関数は直接NULLを返します。VARIANCE()
関数は標準SQLの拡張であり、標準SQL関数VAR_POP()
に置き換えることができます。
入力値のデータ型: BIGINTまたはDOUBLE。
戻り値のデータ型: DOUBLE。
例:
SELECT variance(a) FROM testtable; +----------------------------+ | variance(a) | +----------------------------+ | 0.6666666666666666 |
VAR_POP
var_pop(x)
説明: この関数は、整数、小数、または浮動小数点数の集合の母集団標準分散を返します。
説明VAR_POP()
関数は、NULL値を持つ行を無視します。 セット内のすべての値がNULLの場合、VAR_POP()
関数は直接NULLを返します。VAR_POP()
関数と同等ですが、標準のSQL関数ではありません。
入力値のデータ型: BIGINTまたはDOUBLE。
戻り値のデータ型: DOUBLE。
例:
SELECT var_pop(a) FROM testtable;
次の情報が返されます。
+--------------------+ | var_pop(a) | +--------------------+ | 0.6666666666666666 | +--------------------+
VAR_SAMP
var_samp(x)
説明: この関数は、整数、小数、または浮動小数点数のセットのサンプル分散を返します。
入力値のデータ型: BIGINTまたはDOUBLE。
戻り値のデータ型: DOUBLE。
例:
SELECT var_samp(a) FROM testtable;
次の情報が返されます。
+-------------+ | var_samp(a) | +-------------+ | 1.0 | +-------------+
GROUP_CONCAT
GROUP_CONCAT([DISTINCT] col_name
[ORDER BY col_name [ASC | DESC]]
[SEPARATOR str_val])
条項 | 必須 | 説明 |
| 選択可能 | 重複を削除する列を指定します。 |
| グループ内でソートする列を指定します。 次のソート方法がサポートされています。
並べ替え方法を指定しない場合は、昇順が使用されます。 | |
| グループ内の値を区切るために使用する区切り文字を指定します。 区切り文字を指定しない場合は、コンマ (,) が使用されます。 |
説明: この関数は、グループから連結された値の文字列結果を返します。 値は、
GROUP BY
句の返された結果から取得されます。説明GROUP_CONCAT()
関数を使用して連結する列のすべての値がNULLの場合にのみ、NULL
が返されます。入力値のデータ型: STRING。
戻り値のデータ型: STRING。
例:
GROUP_CONCAT()
関数を使用するperson
という名前のテーブルを作成します。CREATE TABLE person(id INT,name VARCHAR,age INT ) DISTRIBUTED BY HASH(id);
テーブルにデータを挿入します。
INSERT INTO person VALUES (1,'mary',13),(2,'eva',14),(2,'adam',13),(3,'eva',13),(3,null,13),(3,null,null),(4,null,13),(4,null,null);
個人テーブルを
id
列でグループ化します。GROUP_CONCAT()
関数を使用して、同じIDのname
列の個別の値を表示し、テーブルをname
列で降順に並べ替えてから、各グループのname
列の値を数字 (#
) で区切ります。SELECT id, GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '#') FROM person GROUP BY id;
次の情報が返されます。
+------+--------------------------------------------------------------+ | id | GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '#') | +------+--------------------------------------------------------------+ | 2 | eva#adam | | 1 | mary | | 4 | NULL | | 3 | eva | +------+--------------------------------------------------------------+