すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:集計関数

最終更新日:Oct 11, 2024

集計関数を使用して、一連のデータに対してサマリー計算を実行できます。 このトピックでは、集計関数の構文について説明し、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])

条項

必須

説明

距離

選択可能

重複を削除する列を指定します。

注文単位

グループ内でソートする列を指定します。 次のソート方法がサポートされています。

  • ASC: 昇順。

  • DESC: 降順。

並べ替え方法を指定しない場合は、昇順が使用されます。

SEPARATOR

グループ内の値を区切るために使用する区切り文字を指定します。

区切り文字を指定しない場合は、コンマ (,) が使用されます。

  • 説明: この関数は、グループから連結された値の文字列結果を返します。 値は、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                                                          |
    +------+--------------------------------------------------------------+