集計関数の入力と出力の関係は、多対 1 です。つまり、複数の入力レコードが 1 つの出力レコードに集約されます。 SQL 文では、group by 句と一緒に使用します。

COUNT

関数の定義:
bigint count([distict|all] value)

使用法:

レコード数を数えます。

パラメーターの説明:

  • distinct|all: カウント時に重複レコードを除外するかどうかを指定します。 デフォルトの all では、すべてのレコードが数えられます。 フィールド「distinct」を指定すると、一意のカウント値が使用されます。
  • value: 任意のデータ型。 入力値が NULL の場合、対応する行はカウントされません。 Count (*) にすると、すべての行がカウントされます。

戻り値:

Bigint 型が返されます。

例:
-- テーブル tbla に列 col1 があり、データ型が Bigint の場合
+------+
| COL1 |
+------+
| 1 |
+------+
| 2 |
+------+
| NULL |
+------+
select count(*) from tbla;  -- 値は 3.
select count(col1) from tbla;  -- 値は 2
集計関数は、group by 句と一緒に使用します。 たとえば、テーブル "test_src" に 2 つの列があり、key が String 型、value が Double 型であるとします。
-- test_src pデータは、次のように表示されます。
+-----+-------+
| key | value |
+-----+-------+
| a | 2.0 |
+-----+-------+
| a | 4.0 |
+-----+-------+
| b | 1.0 |
+-----+-------+
| b | 3.0 |
+-----+-------+
-- 次の文を実行し、結果を取得します。
select key, count(value) as count from test_src group by key;
+-----+-------+
| key | count |
+-----+-------+
| a | 2 |
+-----+-------+
| b | 2 |
+-----+-------+
-- 集計関数は、同じキー値を持つ集計値を計算します。前述のルールは、以降の関数にも適用されます。

AVG

関数の定義:
double avg(double value)
decimal avg(decimal value)

使用法:

平均値を計算します。

パラメーターの説明:

value: Double 型または Decimal 型です。 入力値が String 型または Bigint 型の場合は、暗黙の変換で Double 型に変換されます。 それ以外のデータ型の場合は、例外が発生します。 入力値が NULL の場合、対応する行は演算で使用されません。 入力値は Boolean 型にはできません。

戻り値:

入力値が Decimal 型の場合、Decimal 型が返されます。 それ以外の有効なデータ型の場合、Double 型が返されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+-------+
| value | 
+-------+
| 1 |
| 2 |
| NULL |
+-------+
-- この列の平均: (1+2)/2=1.5
select avg(value) as avg from tbla;
+------+
| avg |
+------+
| 1.5 |
+------+

MAX

関数の定義:
max(value)

使用法:

最大値を計算します。

パラメーターの説明:

value: 任意のデータ型。 列値が NULL の場合、対応する行は演算で使用されません。 Boolean 型の値は計算から除外されます。

戻り値:

戻り値と入力値のデータ型は同じです。

例:
-- テーブル tbla に列 clo1 があり、データ型が Bigint の場合
+------+
| col1 |
+------+
| 1 |
+------+
| 2 |
+------+
| NULL |
+------+
Select max (value) from tbla; -- 戻り値は 2

MIN

関数の定義:
MIN(value)

使用法:

列の最小値を計算します。

パラメーターの説明:

任意のデータ型。 列値が NULL の場合、対応する行は演算で使用されません。 Boolean 型は演算から除外されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+------+
| value|
+------+
| 1 |
+------+
| 2 |
+------+
 
+------+
Select min (value) from tbla; -- 戻り値は 1

MEDIAN

関数の定義:
double median(double number)
decimal median(decimal number)

使用法:

中央値を計算します。

パラメーターの説明:

number: Double 型または Decimal 型です。 入力値が String 型または Bigint 型の場合は、Double 型に変換されてから演算で使用されます。 それ以外のデータ型の場合は、例外が発生します。

戻り値:

Double 型または Decimal 型が返されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+------+
| value|
+------+
| 1 |
+------+
| 2 |
+------+
| 3 |
+------+
| 4 |
+------+
| 5 |
+------+
select MEDIAN(value) from tbla;  -- 戻り値は 3.0

STDDEV

関数の定義:
double stddev(double number)
decimal stddev(decimal number)

使用法:

母集団の標準偏差を計算します。

パラメーターの説明:

number: Double 型または Decimal 型です。 入力値が String 型または Bigint 型の場合は、Double 型に変換されてから演算で使用されます。 それ以外のデータ型の場合は、例外が発生します。

戻り値:

Double 型または Decimal 型が返されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+------+
| value|
+------+
| 1 |
+------+
| 2 |
+------+
| 3 |
+------+
| 4 |
+------+
| 5 |
+------+
select STDDEV(value) from tbla;  -- 戻り値は 1.4142135623730951

STDDEV_SAMP

関数の定義:
double stddev_samp(double number)
decimal stddev_samp(decimal number)

使用法:

母集団の標準偏差を計算します。

パラメーターの説明:

number: Double 型または Decimal 型です。 入力値が String 型または Bigint 型の場合は、Double 型に変換されてから演算で使用されます。 それ以外のデータ型の場合は、例外が発生します。

戻り値:

Double 型または Decimal 型が返されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+------+
| value|
+------+
| 1 |
+------+
| 2 |
+------+
| 3 |
+------+
| 4 |
+------+
| 5 |
+------+
select STDDEV_SAMP(value) from tbla; -- 戻り値は 1.5811388300841898

SUM

関数の定義:
sum(value)

使用法:

要素の合計を計算します。

パラメーターの説明:

value: Double 型、Decimal 型、Bigint 型のいずれかです。 入力値が String 型の場合は、Double 型に変換されてから演算で使用されます。 列の値が NULL の場合、その行はカウントされます。Boolean 型のデータは、計算から除外されます。

戻り値:

入力パラメータ値が Bigint 型の場合は、Bigint型が返されます。 入力パラメータ値が Double 型または String 型の場合は、Double 型が返されます。

例:
-- テーブル tbla に列値が含まれていて、データ型が Bigint の場合
+------+
| value|
+------+
| 1 |
+------+
| 2 |
+------+
| NULL |
+------+
select sum(value) from tbla;   -- 戻り値は 3

WM_CONCAT

関数の定義:
string wm_concat(string separator, string str)

使用法:

特定の区切り文字を使用して、str の値を連結します。

パラメーターの説明:
  • Separator: String 型の定数です。 それ以外の型の定数の場合、または定数でない場合は、例外が発生する可能性があります。
  • Str: String 型。 入力値が String 型の場合は、Double 型に変換されてから演算で使用されます。 別のデータ型の場合は、例外が発生します。

戻り値:

String 型が返されます。

select wm_concat(',', name) from test_src;の SQL 文では、test_src が空の場合には NULL が返されます。

COLLECT_LIST

関数の定義:
ARRAY collect_list(col)

使用法:

特定のグループ内で、col で指定された式を使用してデータを配列に集約します。

パラメーターの説明:

col: テーブル列は任意のデータ型にすることができます。

戻り値:

ARRAY 型が返されます。

新規データ型を使用するには、この関数を指定する SQL 文の前に set odps.sql.type.system.odps2=true; を追加し、 SQL 文と一緒に送信します。

COLLECT_SET

関数の定義:
ARRAY collect_set(col)

使用法:

特定のグループ内で、col で指定した式を使用して、データを非繰り返し要素の配列に集約します。

パラメーターの説明:

col: テーブル列は任意のデータ型にすることができます。

戻り値:

Array 型が返されます。

新規データ型を使用するには、この関数を指定する SQL 文の前に set odps.sql.type.system.odps2=true; を追加し、SQL 文と一緒に送信します。