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

Lindorm:集計関数

最終更新日:Mar 26, 2025

Lindorm は、COUNT や SUM など、データ分析のための一連の集計関数を備えています。

適用可能なエンジンとバージョン

このトピックで説明する関数は、特定のバージョンの以下の Lindorm エンジンに適用できます。

  • 全バージョンの LindormTable

  • LindormTSDB V3.4.7 以降

関数

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

関数

説明

AVG

指定された列のすべての値の平均を返します。

COUNT

指定された列の空でない値の数を返します。

MAX

指定された列の最大値を返します。

MIN

指定された列の最小値を返します。

SUM

指定された列の値の合計を返します。

HEAD

指定された列または式の最初の空でない値を返します。

GROUP_CONCAT

GROUP BY 句で指定された列に基づいて1つ以上の射影列をグループ化し、1つ以上のソート列に基づいて各グループの射影列をソートし、列の値を長い文字列に連結してから、連結された文字列を返します。

サンプルテーブルを作成するには、次の文を実行します。

-- sensor という名前のテーブルを作成します。
CREATE TABLE sensor(
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

-- 複数の行のデータを同時に書き込みます。
UPSERT INTO sensor(device_id ,region ,time,temperature) VALUES('F07A1260','north-cn','2021-04-22 15:33:20',10.6), ('F07A1261','south-cn','2021-04-22 15:33:00',18.1), ('F07A1261','south-cn','2021-04-22 15:33:10',19.7);

AVG

この関数を呼び出して、指定された列のすべての値の平均を取得できます。

構文

AVG(column_name)

パラメーター

パラメーター

説明

column_name

列の名前。数値データ型の列のみがサポートされています。

すべてのデバイスから収集された温度値の平均を計算します。

SELECT AVG(temperature) AS temperature FROM sensor;

出力例:

+--------------------+
| temperature        |
+--------------------+
| 16.133333333333333 |
+--------------------+

COUNT

この関数を呼び出して、指定された列に空でない値がいくつあるかを取得できます。

構文

COUNT(* | column_name)

パラメーター

パラメーター

説明

column_name

列の名前。

  • すべてのデバイスから収集された温度値の数をカウントします。

    SELECT COUNT(temperature) AS temperature FROM sensor;

    出力例:

    +-------------+
    | temperature |
    +-------------+
    | 3           |
    +-------------+
  • sensor テーブルで、device_id 列の値が F07A1260 である行の数をカウントします。

    SELECT COUNT(*) FROM sensor WHERE device_id = 'F07A1260';

    出力例:

    +--------+
    | EXPR$0 |
    +--------+
    | 1      |
    +--------+
  • sensor テーブルの行数をカウントします。

    SELECT COUNT(*) FROM sensor;

    出力例:

    +--------+
    | EXPR$0 |
    +--------+
    | 3      |
    +--------+

MAX

この関数を呼び出して、指定された列の最大値を取得できます。

構文

MAX(column_name)

パラメーター

パラメーター

説明

column_name

列の名前。

すべてのデバイスから収集された温度値の最大値をクエリします。

SELECT MAX(temperature) FROM sensor;

出力例:

+--------+
| EXPR$0 |
+--------+
| 19.7   |
+--------+

MIN

この関数を呼び出して、指定された列の最小値を取得できます。

構文

MIN(column_name)

パラメーター

パラメーター

説明

column_name

列の名前。

すべてのデバイスから収集された温度値の最小値をクエリします。

SELECT MIN(temperature) FROM sensor;

出力例:

+--------+
| EXPR$0 |
+--------+
| 10.6   |
+--------+

SUM

この関数を呼び出して、指定された列の値の合計を取得できます。

構文

SUM(column_name)

パラメーター

パラメーター

説明

column_name

列の名前。数値データ型の列のみがサポートされています。

すべてのデバイスから収集された温度値の合計をクエリします。

SELECT SUM(temperature) FROM sensor;

出力例:

+--------+
| EXPR$0 |
+--------+
| 48.4   |
+--------+

HEAD

この関数を呼び出して、expr1 で指定された列または式の最初の空でない値を取得し、expr2 で指定された列に基づいて結果をソートできます。

重要

LindormTable のバージョンは 2.7.9 以降である必要があります。 Lindorm SQL のバージョンは 2.8.8.0 以降である必要があります。 LindormTableLindorm SQL のバージョンはコンソールで確認でき、LindormTable のマイナーバージョンを 2.7.9 以降に更新できます。

構文

HEAD (expr1 [ ORDER BY expr2 [ DESC ] ] )

パラメーター

パラメーター

説明

expr1

最初の空でない値を取得する列または式。

このパラメーターは、INTEGER、BIGINT、SMALLINT、TINYINT、FLOAT、DOUBLE、DECIMAL、BOOLEAN、VARCHAR、CHAR、TIMESTAMP、JSON、および GEOMETRY のデータ型をサポートしています。

expr2

ソート方法。このパラメーターを指定しない場合、結果は最初のプライマリキー列に基づいてソートされます。

重要

このパラメーターは 他の集計関数 内にネストできません。たとえば、HEAD(c1 ORDER BY COUNT(c2)) はサポートされていません。

  • temperature 列の最小値と最大値をクエリします。

    SELECT HEAD(temperature ORDER BY temperature), HEAD(temperature ORDER BY temperature DESC) FROM sensor;

    出力例:

    +--------+--------+
    | EXPR$0 | EXPR$1 |
    +--------+--------+
    | 10.6   | 19.7   |
    +--------+--------+
  • device_id 列の文字長が最小である temperature 値をクエリします。

    SELECT HEAD(temperature ORDER BY LENGTH(device_id)) FROM sensor;

    出力例:

    +--------+
    | EXPR$0 |
    +--------+
    | 10.6   |
    +--------+

GROUP_CONCAT

この関数を呼び出して、GROUP BY 句で指定されたグループ列に基づいて1つ以上の射影列をグループ化し、1つ以上のソート列に基づいて各グループの射影列をソートし、列の値を長い文字列に連結してから、連結された文字列を返すことができます。

重要

LindormTable のバージョンは 2.7.9 以降である必要があります。 Lindorm SQL のバージョンは 2.8.8.0 以降である必要があります。 LindormTableLindorm SQL のバージョンはコンソールで確認でき、LindormTable のマイナーバージョンを 2.7.9 以降に更新できます。

構文

GROUP_CONCAT ( [ DISTINCT ] expr (, expr ... )*
             [ ORDER BY col_name [ DESC ] (, col_name [ DESC ])* ]
             [ SEPARATOR str_val ] )
重要

DISTINCT キーワードと ORDER BY キーワードは同時に使用できません。

パラメーター

パラメーター

説明

expr

射影列。

col_name

ソート列。

str_val

連結された文字列で使用される区切り文字。

t1 という名前のサンプルテーブルを作成するには、次の文を実行します。

-- t1 という名前のサンプルテーブルを作成します。
CREATE TABLE t1 (p1 INT, p2 VARCHAR, c1 INT, c2 VARCHAR, c3 DOUBLE, PRIMARY KEY(p1, p2));

-- テーブルにデータを挿入します。
UPSERT INTO t1(p1, p2, c1, c2, c3) VALUES 
(1, 'a', 10, 'java', 10.23),
(1, 'b', 10, 'c/c++', 5.76),
(1, 'c', 18, 'python', 8.21),
(2, 'a', 40, 'sql', 3.14),
(2, 'b', 100, 'c#', 4.96),
(2, 'c', 66, 'matlab', 7.01);
  • 例 1:プライマリキー列 p1 に基づいて列 c1 をグループ化します。

    SELECT p1, GROUP_CONCAT(c1) FROM t1 GROUP BY p1;

    出力例:

    +----+-----------+
    | p1 |  EXPR$1   |
    +----+-----------+
    | 1  | 10,10,18  |
    | 2  | 40,100,66 |
    +----+-----------+
  • 例 2:プライマリキー列 p1 に基づいて列 c1 をグループ化し、重複する値を削除します。

    SELECT p1, GROUP_CONCAT(DISTINCT c1) FROM t1 GROUP BY p1;

    出力例:

    +----+-----------+
    | p1 |  EXPR$1   |
    +----+-----------+
    | 1  | 18,10     |
    | 2  | 100,40,66 |
    +----+-----------+
  • 例 3:プライマリキー列 p1 に基づいて列 c1 をグループ化し、列 c1 に基づいて結果を昇順にソートします。

    SELECT p1, GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY p1;

    出力例:

    +----+-----------+
    | p1 |  EXPR$1   |
    +----+-----------+
    | 1  | 10,10,18  |
    | 2  | 40,66,100 |
    +----+-----------+
  • 例 4:プライマリキー列 p1 に基づいて列 c1 をグループ化し、列 c3 に基づいて結果を降順にソートします。

    SELECT p1, GROUP_CONCAT(c1 ORDER BY c3 DESC) FROM t1 GROUP BY p1;

    出力例:

    +----+-----------+
    | p1 |  EXPR$1   |
    +----+-----------+
    | 1  | 10,18,10  |
    | 2  | 66,100,40 |
    +----+-----------+
  • 例 5:プライマリキー列 p1 に基づいて列 c1 をグループ化し、列 c3 に基づいて結果を降順にソートし、値を縦棒(|)で区切った文字列に連結します。

    SELECT p1, GROUP_CONCAT(c1 ORDER BY c3 DESC SEPARATOR '|') FROM t1 GROUP BY p1;

    出力例:

    +----+-----------+
    | p1 |  EXPR$1   |
    +----+-----------+
    | 1  | 10|18|10  |
    | 2  | 66|100|40 |
    +----+-----------+