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

Lindorm:集計関数

最終更新日:Mar 29, 2026

Lindorm SQL では、行全体にわたる集計処理(合計、平均、極値、文字列の連結)を実行するための集計関数がサポートされています。

対応エンジンおよびバージョン

エンジンバージョン
LindormTableすべてのバージョン
LindormTSDBV3.4.7 以降
HEAD および GROUP_CONCAT を使用するには、LindormTable 2.7.9 以降および Lindorm SQL 2.8.8.0 以降が必要です。

関数一覧

関数説明必要バージョン
AVG指定した列のすべての値の平均値を返しますすべてのバージョン
COUNT指定した列の非空値の個数、または全行数を返しますすべてのバージョン
MAX指定した列の最大値を返しますすべてのバージョン
MIN指定した列の最小値を返しますすべてのバージョン
SUM指定した列の値の合計を返しますすべてのバージョン
HEAD指定した列または式の最初の非空値を返します(任意で並べ替え順序を指定可能)LindormTable 2.7.9+、Lindorm SQL 2.8.8.0+
GROUP_CONCAT各グループ内の列値を単一の文字列に連結しますLindormTable 2.7.9+、Lindorm SQL 2.8.8.0+

サンプルテーブル

このトピックの例では、以下の sensor テーブルを使用します:

-- 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非空値の個数をカウントする列。
*NULL 値を含むすべての行をカウントします。

温度測定値の個数をカウントします:

SELECT COUNT(temperature) AS temperature FROM sensor;

出力結果:

+-------------+
| temperature |
+-------------+
| 3           |
+-------------+

device_idF07A1260 の行数をカウントします:

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

出力結果:

+--------+
| EXPR$0 |
+--------+
| 1      |
+--------+

テーブル内の全行数をカウントします:

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 で指定した列または式に基づいて行をソートしたうえで、最初の値を選択します。expr2 を省略した場合、最初のプライマリキー列でソートされます。

重要

LindormTable 2.7.9 以降および Lindorm SQL 2.8.8.0 以降が必要です。現在のバージョンは、コンソールで確認してください:「LindormTable リリースノート」および「Lindorm SQL のバージョンの説明」。アップグレードについては、「LindormTable インスタンスのマイナーエンジンバージョンをアップグレードする」をご参照ください。

構文

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)) はサポートされていません)。

昇順および降順のソートを用いて、最小および最大の温度を取得します:

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

出力結果:

+--------+--------+
| EXPR$0 | EXPR$1 |
+--------+--------+
| 10.6   | 19.7   |
+--------+--------+

最も短い device_id を持つデバイスの温度を取得します:

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

出力結果:

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

GROUP_CONCAT

GROUP BY 句で指定した列に基づいて行をグループ化し、各グループ内の値をソートしたうえで、単一の文字列に連結します。

重要

LindormTable 2.7.9 以降および Lindorm SQL 2.8.8.0 以降が必要です。コンソールで現在のバージョンを確認してください:「LindormTable リリースノート」および「Lindorm SQL のバージョンの説明」。アップグレード方法については、「LindormTable インスタンスのマイナーエンジンバージョンをアップグレードする」をご参照ください。

構文

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

DISTINCT および ORDER BY は、同一の GROUP_CONCAT 呼び出し内で併用できません。

パラメーター

パラメーター説明
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:c1 の値を p1 でグループ化して連結します:

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

出力結果:

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

例 2:c1 の重複を除外した値を p1 でグループ化して連結します:

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

出力結果:

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

例 3:c1 の値を p1 でグループ化し、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:c1 の値を p1 でグループ化し、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:例 4 と同じですが、区切り文字としてパイプ (|) を使用します:

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 |
+----+-----------+