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

IoT Platform:集計関数

最終更新日:Mar 27, 2025

集計関数は、複数の入力レコードをグループ化して単一の出力レコードを形成します。GROUP BY 句と一緒に集計関数を使用できます。このトピックでは、開発を容易にするために、SQL分析でサポートされている集計関数の構文、パラメーター、および例について説明します。

次の表に、SQL分析でサポートされている集計関数を示します。

関数

説明

ANY_VALUE

特定の列からランダムな値を返します。

APPROX_DISTINCT

特定の列にある、重複を除いた入力値のおおよその数を返します。

ARG_MAX

特定の列の最大値に対応する行の列値を返します。

ARG_MIN

特定の列の最小値に対応する行の列値を返します。

AVG

列の平均値を返します。

BITWISE_AND_AGG

ビット単位の AND 演算に基づいて入力値を集計します。

BITWISE_OR_AGG

ビット単位の OR 演算に基づいて入力値を集計します。

COUNT

指定された条件に一致するレコードの数を返します。

COUNT_IF

式の値が True であるレコードの数を返します。

MAX

列の最大値を返します。

MAX_BY

特定の列の最大値に対応する行の列値を返します。

MEDIAN

列の中央値を返します。

MIN

列の最小値を返します。

MIN_BY

特定の列の最小値に対応する行の列値を返します。

STDDEV

すべての入力値の母集団標準偏差を返します。

STDDEV_SAMP

すべての入力値の標本標準偏差を返します。

SUM

列の合計を返します。

WM_CONCAT

特定のデリミタを使用して文字列を連結します。

ANY_VALUE

  • 構文

    any_value(<colname>)
  • 説明

    特定の列からランダムな値を返します。

  • パラメーター

    colname: 必須。任意のデータ型の列の名前。

  • 戻り値

    戻り値のデータ型は、colname パラメーターのデータ型と同じです。colname パラメーターの値が null の場合、この値を含む行は計算に使用されません。

    • 例 1:従業員の 1 人を選択します。サンプルステートメント:

      select any_value(ename) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | SMITH      |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、deptno 列に基づいてすべての従業員をグループ化し、各グループから 1 人の従業員を選択します。サンプルステートメント:

      select deptno, any_value(ename) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | CLARK      |
      | 20         | SMITH      |
      | 30         | ALLEN      |
      +------------+------------+

APPROX_DISTINCT

  • 構文

    approx_distinct(<colname>)
  • 説明

    特定の列にある、重複を除いた入力値のおおよその数を返します。

  • パラメーター

    colname: 必須。重複を削除する必要がある列の名前。

  • 戻り値

    BIGINT 型の値が返されます。この関数は、5% の標準偏差を生成します。colname パラメーターで指定された列の値が null の場合、この値を含む行は計算に使用されません。

    • 例 1: sal 列にある、重複を除いた値のおおよその数を計算します。サンプルステートメント:

      select approx_distinct(sal) from emp;

      次の出力が返されます:

      +-------------------+
      | numdistinctvalues |
      +-------------------+
      | 12                |
      +-------------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、sal 列にある、重複を除いた値のおおよその数を計算します。サンプルステートメント:

      select deptno, approx_distinct(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+-------------------+
      | deptno     | numdistinctvalues |
      +------------+-------------------+
      | 10         | 3                 |
      | 20         | 4                 |
      | 30         | 5                 |
      +------------+-------------------+

ARG_MAX

  • 構文

    arg_max(<valueToMaximize>, <valueToReturn>)
  • 説明

    valueToMaximize の最大値が含まれる行を検索し、その行の valueToReturn の値を返します。

  • パラメーター

    • valueToMaximize: 必須。任意のデータ型の値。

    • valueToReturn: 必須。任意のデータ型の値。

  • 戻り値

    戻り値のデータ型は、valueToReturn パラメーターのデータ型と同じです。複数の行に valueToMaximize の最大値が含まれている場合、行のいずれかの valueToReturn の値がランダムに返されます。valueToMaximize の値が null の場合、この値を含む行は計算に使用されません。

    • 例 1:最も高い給与を得ている従業員の名前を返します。サンプルステートメント:

      select arg_max(sal, ename) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | KING       |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各グループで最も高い給与を得ている従業員の名前を返します。サンプルステートメント:

      select deptno, arg_max(sal, ename) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | KING       |
      | 20         | SCOTT      |
      | 30         | BLAKE      |
      +------------+------------+

ARG_MIN

  • 構文

    arg_min(<valueToMinimize>, <valueToReturn>)
  • 説明

    valueToMinimize の値が含まれる行を検索し、その行の valueToReturn の値を返します。

  • パラメーター

    • valueToMinimize: 必須。任意のデータ型の値。

    • valueToReturn: 必須。任意のデータ型の値。

  • 戻り値

    戻り値のデータ型は、valueToReturn パラメーターのデータ型と同じです。複数の行に valueToMinimize の最小値が含まれている場合、行のいずれかの valueToReturn の値がランダムに返されます。valueToMinimize の値が null の場合、その値を含む行は計算に使用されません。

    • 例 1:最も低い給与を得ている従業員の名前を返します。サンプルステートメント:

      select arg_min(sal, ename) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | SMITH      |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各グループで最も低い給与を得ている従業員の名前を返します。サンプルステートメント:

      select deptno, arg_min(sal, ename) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | MILLER     |
      | 20         | SMITH      |
      | 30         | JAMES      |
      +------------+------------+

AVG

  • 構文

    DECIMAL|DOUBLE  avg(<colname>)
  • 説明

    列の平均値を返します。

  • パラメーター

    colname: 必須。列値はすべてのデータ型をサポートし、計算前に DOUBLE 型に変換できます。

  • 戻り値

    colname の値が null の場合、この値を含む行は計算に使用されません。次の表に、入力データのデータ型と戻り値のマッピングを示します。

    入力データのデータ型

    戻り値のデータ型

    TINYINT

    DOUBLE

    SMALLINT

    DOUBLE

    INT

    DOUBLE

    BIGINT

    DOUBLE

    FLOAT

    DOUBLE

    DOUBLE

    DOUBLE

    DECIMAL

    DECIMAL

    • 例 1:すべての従業員の平均給与 (sal) 値を計算します。サンプルステートメント:

      select avg(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 2222.0588235294117 |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の平均給与 (sal) 値を計算します。サンプルステートメント:

      select deptno, avg(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 2916.6666666666665 |
      | 20         | 2175.0     |
      | 30         | 1566.6666666666667 |
      +------------+------------+

BITWISE_AND_AGG

  • 構文

    bigint bitwise_and_agg(bigint value)
  • 説明

    ビット単位の AND 演算に基づいて入力値を集計します。

  • パラメーター

    value: 必須。BIGINT 型の値。NULL 値は計算に使用されません。

  • 戻り値

    BIGINT 型の値が返されます。

  • select id, bitwise_and_agg(v) from
        values (1L, 2L), (1L, 1L), (2L, null), (1L, null) t(id, v) group by id;

    次の出力が返されます:

    +------------+------------+
    | id         | _c1        |
    +------------+------------+
    | 1          | 0          |
    | 2          |NULL       |
    +------------+------------+

BITWISE_OR_AGG

  • 構文

    bigint bitwise_or_agg(bigint value)
  • 説明

    ビット単位の OR 演算に基づいて入力値を集計します。

  • パラメーター

    value: 必須。BIGINT 型の値。NULL 値は計算に使用されません。

  • 戻り値

    BIGINT 型の値が返されます。

  • select id, bitwise_or_agg(v) from
        values (1L, 2L), (1L, 1L), (2L, null), (1L, null) t(id, v) group by id;

    次の出力が返されます:

    +------------+------------+
    | id         | _c1        |
    +------------+------------+
    | 1          | 3          |
    | 2          | NULL       |
    +------------+------------+

COUNT

  • 構文

    bigint count([distinct|all] <colname>)
  • 説明

    指定された条件に一致するレコードの数を返します。

  • パラメーター

    • distinct|all: オプション。このパラメーターは、カウント中に重複を削除するかどうかを指定します。デフォルト値は all で、すべてのレコードがカウントされることを指定します。このパラメーターを distinct に設定すると、値が重複していないレコードのみがカウントされます。

    • colname: 必須。任意のデータ型の列の名前。colname の値はアスタリスク (*) にすることができます。count(*) は、すべての行の数が返されることを示します。

  • 戻り値

    BIGINT 型の値が返されます。colname で指定された列の値が null の場合、この値を含む行は計算に使用されません。

    • 例 1:すべての部門の従業員の総数を計算します。サンプルステートメント:

      select count(*) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 17         |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員数を計算します。サンプルステートメント:

      select deptno, count(*) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 6          |
      | 20         | 5          |
      | 30         | 6          |
      +------------+------------+
    • 例 3:部門数を計算するときに重複を削除します。 サンプルステートメント:

      select count(distinct deptno) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 3          |
      +------------+

COUNT_IF

  • 構文

    bigint count_if(boolean <expr>)
  • 説明

    expr の値が True であるレコードの数を返します。

  • パラメーター

    expr: 必須。ブール式。

  • 戻り値

    BIGINT 型の値が返されます。expr パラメーターの値が False であるか、expr 内の特定の列の値が null の場合、この値を含む行は計算に使用されません。

  • select count_if(sal > 1000), count_if(sal <=1000) from emp;

    次の出力が返されます:

    +------------+------------+
    | _c0        | _c1        |
    +------------+------------+
    | 15         | 2          |
    +------------+------------+

MAX

  • 構文

    max(<colname>)
  • 説明

    列の最大値を返します。

  • パラメーター

    colname: 必須。BOOLEAN 以外の任意のデータ型の列の名前。

  • 戻り値

    戻り値の型は、colname パラメーターの型と同じです。戻り値は、次のルールに基づいて異なります。

    • colname の値が null の場合、この値を含む行は計算に使用されません。

    • colname の値が BOOLEAN 型の場合、その値は計算に使用されません。

    • 例 1:すべての従業員の中で最も高い給与 (sal) を計算します。サンプルステートメント:

      select max(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 5000       |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の中で最も高い給与を計算します。サンプルステートメント:

      select deptno, max(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 5000       |
      | 20         | 3000       |
      | 30         | 2850       |
      +------------+------------+

MAX_BY

  • 構文

    max_by(<valueToReturn>,<valueToMaximize>)
  • 説明

    説明

    MAX_BY 関数は ARG_MAX 関数と同じ機能を提供します。ただし、関数はパラメーターの順序が異なります。MAX_BY 関数は、オープンソース構文との互換性を維持するために MaxCompute に導入されています。

    valueToMaximize の最大値が含まれる行を検索し、その行の valueToReturn の値を返します。

  • パラメーター

    • valueToMaximize: 必須。任意のデータ型の値。

    • valueToReturn: 必須。任意のデータ型の値。

  • 戻り値

    戻り値のデータ型は、valueToReturn パラメーターのデータ型と同じです。複数の行に valueToMaximize の最大値が含まれている場合、行のいずれかの valueToReturn の値がランダムに返されます。valueToMaximize の値が null の場合、この値を含む行は計算に使用されません。

    • 例 1:最も高い給与を得ている従業員の名前を返します。サンプルステートメント:

      select max_by(ename,sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | KING       |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、deptno 列に基づいてすべての従業員をグループ化し、各グループで最も高い給与を得ている従業員の名前を返します。サンプルステートメント:

      select deptno, max_by(ename,sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | KING       |
      | 20         | SCOTT      |
      | 30         | BLAKE      |
      +------------+------------+

MEDIAN

  • 構文

    double median(double <colname>)
    decimal median(decimal <colname>)
  • 説明

    列の中央値を返します。

  • パラメーター

    colname: 必須。DOUBLE 型または DECIMAL 型の列の名前。入力値が STRING 型または BIGINT 型の場合、計算前に暗黙的に DOUBLE 型に変換されます。

  • 戻り値

    colname の値が null の場合、この値を含む行は計算に使用されません。次の表に、入力データのデータ型と戻り値のマッピングを示します。

    入力データのデータ型

    戻り値のデータ型

    TINYINT

    DOUBLE

    SMALLINT

    DOUBLE

    INT

    DOUBLE

    BIGINT

    DOUBLE

    FLOAT

    DOUBLE

    DOUBLE

    DOUBLE

    DECIMAL

    DECIMAL

    • 例 1:すべての従業員の中央給与 (sal) 値を計算します。サンプルステートメント:

      select median(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 1600.0     |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の中央給与値を計算します。サンプルステートメント:

      select deptno, median(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 2450.0     |
      | 20         | 2975.0     |
      | 30         | 1375.0     |
      +------------+------------+

MIN

  • 構文

    min(<colname>)
  • 説明

    列の最小値を返します。

  • パラメーター

    colname: 必須。BOOLEAN 以外の任意のデータ型の列の名前。

  • 戻り値

    戻り値の型は、colname パラメーターの型と同じです。戻り値は、次のルールに基づいて異なります。

    • colname の値が null の場合、この値を含む行は計算に使用されません。

    • colname の値が BOOLEAN 型の場合、その値は計算に使用されません。

    • 例 1:すべての従業員の中で最も低い給与 (sal) を計算します。サンプルステートメント:

      select min(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 800        |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の中で最も低い給与を計算します。サンプルステートメント:

      select deptno, min(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 1300       |
      | 20         | 800        |
      | 30         | 950        |
      +------------+------------+

MIN_BY

  • 構文

    min_by(<valueToReturn>,<valueToMinimize>)
  • 説明

    説明

    MIN_BY 関数は ARG_MIN 関数と同じ機能を提供します。ただし、関数はパラメーターの順序が異なります。MIN_BY 関数は、オープンソース構文との互換性を維持するために MaxCompute に導入されています。

    valueToMinimize の最小値が含まれる行を検索し、その行の valueToReturn の値を返します。

  • パラメーター

    • valueToMinimize: 必須。任意のデータ型の値。

    • valueToReturn: 必須。任意のデータ型の値。

  • 戻り値

    戻り値のデータ型は、valueToReturn パラメーターのデータ型と同じです。複数の行に valueToMinimize の最小値が含まれている場合、行のいずれかの valueToReturn の値がランダムに返されます。valueToMinimize の値が null の場合、この値を含む行は計算に使用されません。

    • 例 1:最も低い給与を得ている従業員の名前を返します。サンプルステートメント:

       select min_by(ename,sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | SMITH      |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各グループで最も低い給与を得ている従業員の名前を返します。サンプルステートメント:

      select deptno, min_by(ename,sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | MILLER     |
      | 20         | SMITH      |
      | 30         | JAMES      |
      +------------+------------+

STDDEV

  • 構文

    double stddev(double <colname>)
    decimal stddev(decimal <colname>)
  • 説明

    すべての入力値の母集団標準偏差を返します。

  • パラメーター

    colname: 必須。DOUBLE 型または DECIMAL 型の列の名前。入力値が STRING 型または BIGINT 型の場合、計算前に暗黙的に DOUBLE 型に変換されます。

  • 戻り値

    colname の値が null の場合、この値を含む行は計算に使用されません。次の表に、入力データのデータ型と戻り値のマッピングを示します。

    入力データのデータ型

    戻り値のデータ型

    TINYINT

    DOUBLE

    SMALLINT

    DOUBLE

    INT

    DOUBLE

    BIGINT

    DOUBLE

    FLOAT

    DOUBLE

    DOUBLE

    DOUBLE

    DECIMAL

    DECIMAL

    • 例 1:すべての従業員の給与 (sal) 値の母集団標準偏差を計算します。サンプルステートメント:

      select stddev(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 1262.7549932628976 |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の給与値 (sal) の母集団標準偏差を計算します。サンプルステートメント:

      select deptno, stddev(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 1546.1421524412158 |
      | 20         | 1004.7387720198718 |
      | 30         | 610.1001739241043 |
      +------------+------------+

STDDEV_SAMP

  • 構文

    double stddev_samp(double <colname>)
    decimal stddev_samp(decimal <colname>)
  • 説明

    すべての入力値の標本標準偏差を返します。

  • パラメーター

    colname: 必須。DOUBLE 型または DECIMAL 型の列の名前。入力値が STRING 型または BIGINT 型の場合、計算前に暗黙的に DOUBLE 型に変換されます。

  • 戻り値

    colname の値が null の場合、この値を含む行は計算に使用されません。次の表に、入力データのデータ型と戻り値のマッピングを示します。

    入力データのデータ型

    戻り値のデータ型

    TINYINT

    DOUBLE

    SMALLINT

    DOUBLE

    INT

    DOUBLE

    BIGINT

    DOUBLE

    FLOAT

    DOUBLE

    DOUBLE

    DOUBLE

    DECIMAL

    DECIMAL

    • 例 1:すべての従業員の給与 (sal) 値の標本標準偏差を計算します。サンプルステートメント:

      select stddev_samp(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 1301.6180541247609 |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の給与値の標本標準偏差を計算します。サンプルステートメント:

      select deptno, stddev_samp(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 1693.7138680032901 |
      | 20         | 1123.3320969330487 |
      | 30         | 668.3312551921141 |
      +------------+------------+

SUM

  • 構文

    DECIMAL|DOUBLE|BIGINT  sum(<colname>)
  • 説明

    列の合計を返します。

  • パラメーター

    colname: 必須。列値はすべてのデータ型をサポートし、計算前に DOUBLE 型に変換できます。DOUBLE、DECIMAL、または BIGINT 型の列の名前。入力値が STRING 型の場合、計算前に暗黙的に DOUBLE 型に変換されます。

  • 戻り値

    colname の値が null の場合、この値を含む行は計算に使用されません。次の表に、入力データのデータ型と戻り値のマッピングを示します。

    入力データのデータ型

    戻り値のデータ型

    TINYINT

    BIGINT

    SMALLINT

    BIGINT

    INT

    BIGINT

    BIGINT

    BIGINT

    FLOAT

    DOUBLE

    DOUBLE

    DOUBLE

    DECIMAL

    DECIMAL

    • 例 1:すべての従業員の給与 (sal) 値の合計を計算します。サンプルステートメント:

      select sum(sal) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | 37775      |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の給与値の合計を計算します。サンプルステートメント:

      select deptno, sum(sal) from emp group by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 17500      |
      | 20         | 10875      |
      | 30         | 9400       |
      +------------+------------+

WM_CONCAT

  • 構文

    string wm_concat(string <separator>, string <colname>)
  • 説明

    separator で指定されたデリミタを使用して、colname の値を連結します。

  • パラメーター

    • separator: 必須。STRING 型の定数であるデリミタ。

    • colname: 必須。STRING 型の値。入力値が BIGINT、DOUBLE、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。

  • 戻り値 (GROUP BY 句が指定され、ORDER BY 句が指定されていません。)

    STRING 型の値が返されます。戻り値は、次のルールに基づいて異なります。

    • separator の値が STRING 型の定数でない場合は、エラーが返されます。

    • colname の値が STRING、BIGINT、DOUBLE、または DATETIME 型でない場合は、エラーが返されます。

    • colname の値が null の場合、この値を含む行は計算に使用されません。

    説明

    select wm_concat(',', name) from table_name; ステートメントの table_name の値が空のセットの場合、null が返されます。

    • 例 1:すべての従業員の名前 (ename) を連結します。サンプルステートメント:

      select wm_concat(',', ename) from emp;

      次の出力が返されます:

      +------------+
      | _c0        |
      +------------+
      | SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,FORD,MILLER,JACCKA,WELAN,TEBAGE |
      +------------+
    • 例 2: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門の従業員の名前 (ename) を連結します。サンプルステートメント:

      select deptno, wm_concat(',', ename) from emp group by deptno order by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | CLARK,KING,MILLER,JACCKA,WELAN,TEBAGE |
      | 20         | SMITH,JONES,SCOTT,ADAMS,FORD |
      | 30         | ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES |
      +------------+------------+
    • 例 3: GROUP BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、重複を削除した後に各部門の従業員の給与値を連結します。サンプルステートメント:

      select deptno, wm_concat(distinct ',', sal) from emp group by deptno order by deptno;

      次の出力が返されます:

      +------------+------------+
      | deptno     | _c1        |
      +------------+------------+
      | 10         | 1300,2450,5000 |
      | 20         | 1100,2975,3000,800 |
      | 30         | 1250,1500,1600,2850,950 |
      +------------+------------+
    • 例 4: GROUP BY 句と ORDER BY 句と一緒にこの関数を使用して、部門 (deptno) 別にすべての従業員をグループ化し、各部門のすべての従業員の給与値 (sal) を連結し、給与値 (sal) を特定の順序でソートします。サンプルステートメント:

      select deptno, wm_concat(',',sal) within group(order by sal) from emp group by deptno order by deptno;

      次の出力が返されます:

      +------------+------------+
      |deptno|_c1|
      +------------+------------+
      |10|1300,1300,2450,2450,5000,5000|
      |20|800,1100,2975,3000,3000|
      |30|950,1250,1250,1500,1600,2850|
      +------------+------------+