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

Hologres:Hologres の汎用集計関数

最終更新日:Nov 09, 2025

Hologres は PostgreSQL と互換性があり、データ開発のための標準的な PostgreSQL 構文をサポートしています。このトピックでは、Hologres でサポートされている汎用集計関数について説明します。

Hologres は、PostgreSQL で利用可能な関数の一部をサポートしています。これらの関数の使用方法の詳細については、「集計関数」をご参照ください。次の表に、Hologres がサポートする汎用集計関数を示します。

関数

説明

APPROX_COUNT_DISTINCT

列内の個別値を持つ行の数を計算します。この関数の結果は概算値です。

APPROX_PERCENTILE

数値列の概算パーセンタイルを計算します。

説明

Hologres は V3.1 以降で APPROX_PERCENTILE をサポートしています。

ARRAY_AGG

式の値を配列に集計します。

AVG

BIGINT、FLOAT8、FLOAT4、または INT 式によって返される NULL 以外の値の平均を計算します。

BIT_AND

BIGINT または INT 式によって返される NULL 以外の値に対してビット単位の AND 演算を実行します。

BIT_OR

BIGINT または INT 式によって返される NULL 以外の値に対してビット単位の OR 演算を実行します。

BOOL_AND

BOOLEAN 式によって返されるすべての値が TRUE であるかどうかをチェックします。

BOOL_OR

BOOLEAN 式によって返されるいずれかの値が TRUE であるかどうかをチェックします。

CORR

2 つの変数間の相関係数を計算します。

COUNT

指定されたテーブルの行数、または BIGINT または NUMERIC 式からの入力行数を取得します。

COVAR_POP

母集団共分散を計算します。

COVAR_SAMP

サンプル共分散を計算します。

EVERY

BOOLEAN 式のすべての値が TRUE であるかどうかをチェックします。

MAX

BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式から最大値を取得します。

MAX_BY

列 (列 y) の値を比較して最大値を見つけ、同じ行から別の指定された列 (列 x) の値を返します。

MIN

BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式から最小値を取得します。

MIN_BY

列 (列 y) の値を比較して最小値を見つけ、同じ行から別の指定された列 (列 x) の値を返します。

REGR_AVGX

独立変数 (X) の平均を計算します。

REGR_AVGY

従属変数 (Y) の平均を計算します。

REGR_COUNT

どちらの入力パラメーターも NULL でない行の数を計算します。

REGR_R2

相関係数の 2 乗を計算します。

REGR_INTERCEPT

(Y, X) ペアによって決定される最小二乗適合線形方程式の y 切片を計算します。

REGR_SLOPE

最小二乗適合線形方程式の傾きを計算します。

REGR_SXX

独立変数 (X) の二乗和を sum(X^2) - sum(X)^2/N として計算します。

REGR_SXY

独立変数 (X) と従属変数 (Y) の積の和を sum(X*Y) - sum(X) * sum(Y)/N として計算します。

SUM

BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式からすべての値の合計を取得します。

STDDEV

INT、NUMERIC、または FLOAT8 式によって返される値のサンプル標準偏差を計算します。

STDDEV_POP

INT、NUMERIC、または FLOAT8 式によって返される値の母集団標準偏差を計算します。

STDDEV_SAMP

INT、NUMERIC、または FLOAT8 式によって返される値のサンプル標準偏差を計算します。

STRING_AGG

TEXT 式によって返される NULL 以外の値を、指定された区切り文字を使用して文字列に連結します。

UNIQ

列内の個別値を持つ行の数を計算します。

VARIANCE

INT または NUMERIC 式によって返される値のサンプル分散を計算します。

VAR_POP

FLOAT8、INT、または NUMERIC 式によって返される値の母集団分散を計算します。

VAR_SAMP

INT、FLOAT8、または NUMERIC 式によって返される値のサンプル分散を計算します。

サンプルデータ

-- テーブルを作成します。
CREATE TABLE example_table(
    c1 INT,           
    c2 BOOLEAN,      
    c3 VARCHAR(10),  
    c4 DECIMAL(3, 1),
    c5 TEXT,
    c6 FLOAT8,
    c7 FLOAT8
);

-- データを挿入します。
INSERT INTO example_table (c1, c2, c3, c4, c5, c6, C7) VALUES
(1, true, 'a', 1.1, 3, 6, 7),
(2, false, 'b', 2.2, 4, 6, 2.6);

APPROX_COUNT_DISTINCT

  • 説明: 列内の個別値を持つ行の数を計算します。この関数は、単一の概算値を返します。

    APPROX_COUNT_DISTINCT ( <column> )
  • パラメーター

    column: 必須。個別行の概算数を計算する列を指定します。

  • 使用上の注意

    APPROX_COUNT_DISTINCT 関数は HyperLogLog カーディナリティ推定を使用して、不正確な COUNT DISTINCT 計算を実行します。不正確な COUNT DISTINCT 計算は、特に列に多くの離散値がある場合にクエリのパフォーマンスを向上させます。平均エラー率は通常 0.1% から 1% の間です。この関数は、ある程度の誤差が許容されるパフォーマンス重視のシナリオに適しています。次のパラメーターを使用してエラー率を調整できます。

    SET hg_experimental_approx_count_distinct_precision = 20;
    • 値の範囲は 12 から 20 です。デフォルト値は 17 です。

    • precision パラメーターは、HyperLogLog アルゴリズムでのバケット化のためのビット数を指定します。値が大きいほど、バケット数が多くなり、理論上の精度が高くなります。

    • 精度値を高くすると、計算時間とメモリのオーバーヘッドも増加します。ただし、オーバーヘッドは正確な COUNT DISTINCT ( column ) 文よりもはるかに低くなります。したがって、COUNT DISTINCT ( column ) の代わりに APPROX_COUNT_DISTINCT を使用することをお勧めします。

    • precision パラメーターが 17 より大きい値に設定されている場合、Hologres は HyperLogLog++ アルゴリズムを使用します。このアルゴリズムは戻り値を修正して、エラーをさらに削減し、安定させます。

      たとえば、hg_experimental_approx_count_distinct_precision を 20 に設定すると、ほとんどの場合、エラー率を 0.01% から 0.2% の範囲に削減できます。

    説明

    COUNT DISTINCT ( column ) 関数を使用して、正確な COUNT DISTINCT 計算を実行することもできます。この関数はより多くのリソースを消費します。

  • 次の例では、MaxCompute が提供する TPC-H パブリックデータセットの ORDERS テーブルを使用します。追加の準備なしで、次の SQL 文を直接実行できます。

    -- 外部テーブルを作成します。
    IMPORT FOREIGN SCHEMA public_data
    LIMIT TO (ORDERS_10g)
    FROM SERVER odps_server INTO public options (if_table_exist 'update');
    
    -- 内部テーブルを作成します。
    BEGIN;
    CREATE TABLE ORDERS (
        O_ORDERKEY bigint NOT NULL PRIMARY KEY,
        O_CUSTKEY int NOT NULL,
        O_ORDERSTATUS text NOT NULL,
        O_TOTALPRICE DECIMAL(12, 2) NOT NULL,
        O_ORDERDATE timestamptz NOT NULL,
        O_ORDERPRIORITY text NOT NULL,
        O_CLERK text NOT NULL,
        O_SHIPPRIORITY int NOT NULL,
        O_COMMENT text NOT NULL
    );
    
    CALL set_table_property ('ORDERS', 'segment_key', 'O_ORDERDATE');
    CALL set_table_property ('ORDERS', 'distribution_key', 'O_ORDERKEY');
    CALL set_table_property ('ORDERS', 'bitmap_columns', 'O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT');
    CALL set_table_property ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_COMMENT');
    
    COMMENT ON COLUMN ORDERS.O_ORDERKEY IS '注文 ID';
    COMMENT ON COLUMN ORDERS.O_CUSTKEY IS '顧客 ID';
    COMMENT ON COLUMN ORDERS.O_ORDERSTATUS IS '注文ステータス';
    COMMENT ON COLUMN ORDERS.O_TOTALPRICE IS '合計価格';
    COMMENT ON COLUMN ORDERS.O_ORDERDATE IS '注文日';
    COMMENT ON COLUMN ORDERS.O_ORDERPRIORITY IS '注文優先度';
    COMMENT ON COLUMN ORDERS.O_CLERK IS 'レジ係';
    COMMENT ON COLUMN ORDERS.O_SHIPPRIORITY IS '配送優先度';
    COMMENT ON COLUMN ORDERS.O_COMMENT IS 'コメント';
    
    COMMIT;
    
    -- 内部テーブルにデータをインポートします。
    INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
    • O_CUSTKEY 列の個別行の概算数を計算します。

      SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

      次の結果が返されます。

      approx_count_distinct
      -----------------------
                     1000422
    • グローバル精度を 20 に設定し、O_CUSTKEY 列の個別行の概算数を計算します。

      ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
      SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

      次の結果が返されます。

      approx_count_distinct
      -----------------------
                     1000422
    • セッションレベルの精度を 20 に設定し、O_CUSTKEY 列の個別行の概算数を計算します。

      --セッションレベルの精度を 20 に設定します。
      SET hg_experimental_approx_count_distinct_precision = 20;
      SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

      次の結果が返されます。

       approx_count_distinct
      -----------------------
                      998854

APPROX_PERCENTILE

説明

Hologres は V3.1 以降で APPROX_PERCENTILE をサポートしています。

  • 説明: 数値列の概算パーセンタイルを計算します。この関数は、単一の概算値を返します。

    APPROX_PERCENTILE (fraction) WITHIN GROUP (ORDER BY sort_expression)
  • パラメーター

    • fraction: 0 から 1 までの定数。たとえば、0.5 は中央値を表します。

    • sort_expression: パーセンタイルを計算する列を指定します。この列はソート可能でなければなりません。

  • 使用上の注意

    APPROX_PERCENTILE 関数は、リザーバーサンプリングアルゴリズムを使用します。最大 8,192 個の要素をサンプリングし、これらのサンプルからパーセンタイルを計算します。

  • 次の例では、O_CUSTKEY 列の個別値の概算数を計算します。

    SELECT
      APPROX_PERCENTILE(0.25) WITHIN GROUP (ORDER BY salary) AS q1,
      APPROX_PERCENTILE(0.5)  WITHIN GROUP (ORDER BY salary) AS median,
      APPROX_PERCENTILE(0.75) WITHIN GROUP (ORDER BY salary) AS q3
    FROM employees;

ARRAY_AGG

  • 説明: 式の値を配列に連結します。

    ARRAY_AGG(expression)
  • パラメーター

    expression: 必須。JSON、JSONB、TIMETZ、INTERVAL、INET、OID、UUID、および配列型を除く任意のデータ型の式。

  • 戻り値

    ARRAY 型の値を返します。

  • SELECT ARRAY_AGG(c1) FROM example_table;

    次の結果が返されます。

     array_agg
    -----------
     {2,1}

AVG

  • 説明: BIGINT、FLOAT8、FLOAT4、または INT 式によって返される NULL 以外の値の平均を計算します。

    AVG(expression)
  • パラメーター

    expression: 必須。BIGINT、FLOAT8、FLOAT4、または INT 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT AVG(c7) FROM example_table;

    次の結果が返されます。

       avg
    ----------
     1.500000

BIT_AND

  • 説明: BIGINT または INT 式によって返される NULL 以外の値に対してビット単位の AND 演算を実行します。

    BIT_AND(expression)
  • パラメーター

    expression: 必須。BIGINT または INT 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT BIT_AND(c1) FROM example_table;

    結果は次のとおりです。

     bit_and
    ---------
           0

BIT_OR

  • 説明: BIGINT または INT 式によって返される NULL 以外の値に対してビット単位の OR 演算を実行します。

    BIT_OR(expression)
  • パラメーター

    expression: 必須。BIGINT または INT 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT BIT_OR(c1) FROM example_table;

    次の結果が返されます。

     bit_or
    --------
          3

BOOL_AND

  • 説明: BOOLEAN 式によって返されるすべての値が TRUE であるかどうかをチェックします。

    BOOL_AND(bool)
  • パラメーター

    bool: 必須。BOOLEAN 式。

  • 戻り値

    BOOLEAN 型の値を返します。この関数は、式によって返されるすべての値が true の場合は TRUE (t) を返し、そうでない場合は FALSE (f) を返します。

  • SELECT BOOL_AND(c2) FROM example_table;

    次の結果が返されます。

     bool_and
    ----------
     f

BOOL_OR

  • 説明: BOOLEAN 式によって返されるいずれかの値が TRUE であるかどうかをチェックします。

    BOOL_OR(bool)
  • パラメーター

    bool: 必須。BOOLEAN 式。

  • 戻り値

    BOOLEAN 型の値を返します。この関数は、式によって返されるいずれかの値が true の場合は TRUE (t) を返し、そうでない場合は FALSE (f) を返します。

  • SELECT BOOL_OR(c2) FROM example_table;

    次の結果が返されます。

     bool_or
    ---------
     t

CORR

  • 説明: 2 つの変数間の相関係数を計算します。

    CORR(Y, X)
    説明

    パラメーターは DOUBLE PRECISION、FLOAT、または FLOAT8 データ型でなければなりません。

  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT CORR(c6, c7) FROM example_table;

    次の結果が返されます。

     corr
    ------
    

COUNT

  • 説明: 指定されたテーブルの行数、または BIGINT または NUMERIC 式からの入力行数を取得します。

    • 指定されたテーブルの行数を取得します。

      COUNT(*)
    • BIGINT または NUMERIC 式から入力行数を取得します。

      COUNT(expression)

      expression: 必須。BIGINT または NUMERIC データ型の NULL 以外の式。

  • 戻り値

    BIGINT 型の値を返します。

  • SELECT COUNT(*) FROM example_table;

    次の結果が返されます。

     count
    -------
         2

COVAR_POP

  • 説明: 母集団共分散を計算します。

    COVAR_POP(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT COVAR_POP(c6, c7) FROM example_table;

    次の結果が返されます。

          covar_pop
    ---------------------
     3.5527136788005e-15

COVAR_SAMP

  • 説明: サンプル共分散を計算します。

    COVAR_SAMP(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT COVAR_SAMP(c6, c7) FROM example_table;

    次の結果が返されます。

         covar_samp
    --------------------
     7.105427357601e-15

EVERY

  • 説明: BOOLEAN 式のすべての値が TRUE であるかどうかをチェックします。

    EVERY(bool)
  • パラメーター

    bool: 必須。BOOLEAN 式。

  • 戻り値

    BOOLEAN 型の値を返します。この関数は、式のすべての値が true の場合は TRUE (t) を返し、そうでない場合は FALSE (f) を返します。

  • SELECT EVERY(c2) FROM example_table;

    次の結果が返されます。

     every
    -------
     f

MAX

  • 説明: BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式から最大値を取得します。

    MAX(expression)
  • パラメーター

    expression: 必須。BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT MAX(c1) FROM example_table;

    次の結果が返されます。

     max
    -----
       2

MAX_BY

  • 説明: 列 (列 y) の値を比較して最大値を見つけ、対応する行から別の指定された列 (列 x) の値を返します。

    MAX_BY(x, y);
    説明

    数値型は数値に基づいて比較されます。非数値型は辞書のソート順に基づいて比較されます。

  • パラメーター

    • y: 必須。最大値を取得する列を指定します。列 y が NULL の行は計算に含まれません。

    • x: 必須。列 y の最大値に対応する値を取得する列を指定します。

  • 使用上の注意

    MAX_BY 関数は、Hologres V1.3.36 以降でのみサポートされています。

    説明

    インスタンスのバージョンが V1.3.36 より前の場合は、Hologres DingTalk グループに参加してインスタンスのスペックアップをリクエストできます。詳細については、「オンラインサポートの利用方法」をご参照ください。

  • 戻り値

    • この関数は、列 y の最大値に対応する列 x の値を返します。

    • 列 y のすべての値が NULL の場合、関数は NULL を返します。

    • MAX_BY 関数が列 y に最大値を持つ複数の行を見つけた場合、列 x の対応する値から最大値を返します。

  • --サンプルデータ
    DROP TABLE IF EXISTS test;
    CREATE TABLE IF NOT EXISTS test (
        id INT,
        name TEXT,
        cost INT
    );
    INSERT INTO test
        VALUES (1, 'a', 100), (1, 'aa', 200), (1, 'aaa', 300), (2, 'b', 150), (2, 'bb', 300), (3, 'c', 150), (3, 'cc', 50);

    cost 列の最大値に対応する name 列の値をクエリします。この例では、複数の最大値が存在します。

    SELECT max_by(name, cost) FROM test;

    次の結果が返されます。

     max_by
    --------
     aaa

MIN

  • 説明: BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式から最小値を取得します。

    MIN(expression)
  • パラメーター

    expression: 必須。BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 型。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT MIN(c1) FROM example_table;

    次の結果が返されます。

     min
    -----
       1

MIN_BY

  • 説明: 列 (列 y) の値を比較して最小値を見つけ、対応する行から別の指定された列 (列 x) の値を返します。

    MIN_BY(x, y);
    説明

    数値型は数値に基づいて比較されます。非数値型は辞書のソート順に基づいて比較されます。

  • パラメーター

    • y: 必須。最小値を取得する列を指定します。列 y が NULL の行は計算に含まれません。

    • x: 必須。列 y の最小値に対応する値を取得する列を指定します。

  • 使用上の注意

    MAX_BY および MIN_BY 関数は、Hologres V1.3.36 以降でのみサポートされています。

    説明

    インスタンスのバージョンが V1.3.36 より前の場合は、Hologres DingTalk グループに参加してインスタンスのスペックアップをリクエストできます。詳細については、「オンラインサポートの利用方法」をご参照ください。

  • 戻り値

    • この関数は、列 y の最小値に対応する列 x の値を返します。

    • 列 y のすべての値が NULL の場合、関数は NULL を返します。

    • MIN_BY 関数が列 y に最小値を持つ複数の行を見つけた場合、列 x の対応する値から最小値を返します。

  • --サンプルデータ
    DROP TABLE IF EXISTS test;
    CREATE TABLE IF NOT EXISTS test (
        id INT,
        name TEXT,
        cost INT
    );
    INSERT INTO test
        VALUES (1, 'a', 100), (1, 'aa', 200), (1, 'aaa', 300), (2, 'b', 150), (2, 'bb', 300), (3, 'c', 150), (3, 'cc', 50);

    cost 列の最小値に対応する name 列の値をクエリします。

    SELECT MIN_BY(name, cost) FROM test;

    次の結果が返されます。

    min_by
    --------
     cc
    (1 row)

REGR_AVGX

  • 説明: 独立変数 (X) の平均を計算します。

    REGR_AVGX(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_AVGX(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_avgx
    -----------
           4.8

REGR_AVGY

  • 説明: 従属変数 (Y) の平均を計算します。

    REGR_AVGY(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_AVGY(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_avgy
    -----------
             6

REGR_COUNT

  • 説明: どちらの入力パラメーターも NULL でない行の数を計算します。

    REGR_COUNT(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    BIGINT 型の値を返します。

  • SELECT REGR_COUNT(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_count
    ------------
              2

REGR_R2

  • 説明: 相関係数の 2 乗を計算します。

    REGR_R2(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_R2(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_r2
    ---------
           1

REGR_INTERCEPT

  • 説明: (Y, X) ペアによって決定される最小二乗適合線形方程式の y 切片を計算します。

    REGR_INTERCEPT(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_INTERCEPT(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_intercept
    ----------------
                  6

REGR_SLOPE

  • 説明: 最小二乗適合線形方程式の傾きを計算します。

    REGR_SLOPE(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_SLOPE(c6, c7) FROM example_table;

    次の結果が返されます。

          regr_slope
    ----------------------
     7.34031751818285e-16

REGR_SXX

  • 説明: 独立変数 (X) の二乗和を sum(X^2) - sum(X)^2/N として計算します。

    REGR_SXX(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_SXX(c6, c7) FROM example_table;

    次の結果が返されます。

     regr_sxx
    ----------
         9.68

REGR_SXY

  • 説明: 独立変数 (X) と従属変数 (Y) の積の和を sum(X × Y) - sum(X) × sum(Y)/N として計算します。

    REGR_SXY(Y, X)
  • パラメーター

    Y および X: 必須。DOUBLE PRECISION、FLOAT、または FLOAT8 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT REGR_SXY(c6, c7) FROM example_table;

    次の結果が返されます。

          regr_sxy
    --------------------
     7.105427357601e-15

SUM

  • 説明: BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式からすべての値の合計を計算します。

    SUM(expression)
  • パラメーター

    expression: 必須。BIGINT、FLOAT8、FLOAT4、INT、または NUMERIC 式。

  • 戻り値

    戻り値はパラメーターと同じデータ型です。

  • SELECT SUM(c1) FROM example_table;

    次の結果が返されます。

     sum
    -----
       3

STDDEV

  • 説明: INT、NUMERIC、または FLOAT8 式によって返される値のサンプル標準偏差を計算します。

    STDDEV(expression)
  • パラメーター

    expression: 必須。INT、NUMERIC、または FLOAT8 式。

  • 戻り値

    NUMERIC または FLOAT8 型の値を返します。

  • SELECT STDDEV(c1) FROM example_table;

    次の結果が返されます。

        stddev
    --------------
     0.7071067811

STDDEV_POP

  • 説明: INT、NUMERIC、または FLOAT8 式によって返される値の母集団標準偏差を計算します。

    STDDEV_POP(expression)	
  • パラメーター

    expression: 必須。INT、NUMERIC、または FLOAT8 式。

  • 戻り値

    NUMERIC または FLOAT8 型の値を返します。

  • SELECT STDDEV_POP(c1) FROM example_table;

    次の結果が返されます。

      stddev_pop
    --------------
     0.5000000000

STDDEV_SAMP

  • 説明: INT、NUMERIC、または FLOAT8 式によって返される値のサンプル標準偏差を計算します。

    STDDEV_SAMP(expression)	
  • パラメーター

    expression: 必須。INT、NUMERIC、または FLOAT8 式。

  • 戻り値

    NUMERIC または FLOAT8 型の値を返します。

  • SELECT STDDEV_SAMP(c1) FROM example_table;

    次の結果が返されます。

     stddev_samp
    --------------
     0.7071067812

STRING_AGG

  • 説明: TEXT 式によって返される NULL 以外の値を、指定された区切り文字を使用して文字列に連結します。

    STRING_AGG(<expression> TEXT, <delimiter> TEXT)
  • パラメーター

    • expression: 必須。ソース文字列。

    • delimiter: 必須。区切り文字。

  • 戻り値

    TEXT 型の値を返します。

  • SELECT STRING_AGG(c5, '-') FROM example_table;

    次の結果が返されます。

     string_agg
    ------------
     3-4

UNIQ

  • 説明: 列内の個別値を持つ行の数を計算します。

    UNIQ ( < column > );
  • パラメーター

    column: 必須。個別値を持つ行の数を計算する列を指定します。この列は、SMALLINT、INTEGER、BIGINT、REAL、DOUBLE PRECISION、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIMETZ、および UUID のデータ型にすることができます。

  • 使用上の注意

    • UNIQ 関数は、Hologres V1.3 以降でのみサポートされています。

      説明

      インスタンスのバージョンが V1.3 より前の場合、アップグレード準備時の一般的なエラー」をご参照いただくか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「オンラインサポートの利用方法」をご参照ください。

    • UNIQ 関数は、SQL 文に GROUP BY 句が含まれ、GROUP BY フィールドの値がデータスキューなしで均等に分散されている場合にのみ、COUNT DISTINCT 関数よりも優れたパフォーマンスを発揮します。

    • 通常、UNIQ は GROUP BY キーのカーディナリティが高い場合に COUNT DISTINCT よりも優れたパフォーマンスを発揮します。UNIQ は COUNT DISTINCT よりもメモリ消費量も少なくなります。COUNT DISTINCT を使用するときにメモリ不足エラーが発生した場合は、代替として UNIQ を使用できます。

    • Hologres V2.1 以降、COUNT DISTINCT のパフォーマンスは、単一または複数の COUNT DISTINCT 関数、データスキュー、または GROUP BY 句のない SQL 文を含むさまざまなシナリオで大幅に最適化されています。パフォーマンスを向上させるためにクエリを手動で UNIQ を使用するように書き換える必要はなくなりました。詳細については、「Count Distinct の最適化」をご参照ください。

  • 次の例では、MaxCompute が提供する TPC-H パブリックデータセットの ORDERS テーブルを使用します。追加の準備なしで、次の SQL 文を直接実行できます。

    -- 外部テーブルを作成します。
    IMPORT FOREIGN SCHEMA public_data
    LIMIT TO (ORDERS_10g)
    FROM SERVER odps_server INTO public options (if_table_exist 'update');
    
    -- 内部テーブルを作成します。
    BEGIN;
    CREATE TABLE ORDERS (
        O_ORDERKEY bigint NOT NULL PRIMARY KEY,
        O_CUSTKEY int NOT NULL,
        O_ORDERSTATUS text NOT NULL,
        O_TOTALPRICE DECIMAL(12, 2) NOT NULL,
        O_ORDERDATE timestamptz NOT NULL,
        O_ORDERPRIORITY text NOT NULL,
        O_CLERK text NOT NULL,
        O_SHIPPRIORITY int NOT NULL,
        O_COMMENT text NOT NULL
    );
    
    CALL set_table_property ('ORDERS', 'segment_key', 'O_ORDERDATE');
    CALL set_table_property ('ORDERS', 'distribution_key', 'O_ORDERKEY');
    CALL set_table_property ('ORDERS', 'bitmap_columns', 'O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT');
    CALL set_table_property ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_COMMENT');
    
    COMMENT ON COLUMN ORDERS.O_ORDERKEY IS '注文 ID';
    COMMENT ON COLUMN ORDERS.O_CUSTKEY IS '顧客 ID';
    COMMENT ON COLUMN ORDERS.O_ORDERSTATUS IS '注文ステータス';
    COMMENT ON COLUMN ORDERS.O_TOTALPRICE IS '合計価格';
    COMMENT ON COLUMN ORDERS.O_ORDERDATE IS '注文日';
    COMMENT ON COLUMN ORDERS.O_ORDERPRIORITY IS '注文優先度';
    COMMENT ON COLUMN ORDERS.O_CLERK IS 'レジ係';
    COMMENT ON COLUMN ORDERS.O_SHIPPRIORITY IS '配送優先度';
    COMMENT ON COLUMN ORDERS.O_COMMENT IS 'コメント';
    
    COMMIT;
    
    -- 内部テーブルにデータをインポートします。
    INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
    • ORDERS テーブルの O_CUSTKEY 列の個別行の数を計算します。

      SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;

      次の結果が返されます。

        uniq
      --------
       999982
    • ORDERS テーブルの各 O_ORDERSTATUS の個別の O_CUSTKEY 値の数を計算します。

      SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;

      次の結果が返されます。

       o_orderstatus |  uniq
      ---------------+--------
       P             | 313478
       F             | 996258
       O             | 996400

VARIANCE

  • 説明: INT または NUMERIC 式によって返される値のサンプル分散を計算します。

    VARIANCE(expression)
  • パラメーター

    expression: 必須。INT または NUMERIC 式。

  • 戻り値

    NUMERIC 型の値を返します。

  • SELECT VARIANCE(c1) FROM example_table;

    次の結果が返されます。

       variance
    --------------
     0.5000000000

VAR_POP

  • 説明: FLOAT8、INT、または NUMERIC 式によって返される値の母集団分散を計算します。

    VAR_POP(expression)
  • パラメーター

    expression: 必須。FLOAT8、INT、または NUMERIC 式。

  • 戻り値

    NUMERIC または FLOAT8 型の値を返します。

  • SELECT VAR_POP(c1) FROM example_table;

    次の結果が返されます。

       var_pop
    --------------
     0.2500000000

VAR_SAMP

  • 説明: INT、FLOAT8、または NUMERIC 式によって返される値のサンプル分散を計算します。

    VAR_SAMP(expression)
  • パラメーター

    expression: 必須。INT、FLOAT8、または NUMERIC 式。

  • 戻り値

    NUMERIC または FLOAT8 型の値を返します。

  • SELECT VAR_SAMP(c1) FROM example_table;

    次の結果が返されます。

       var_samp
    --------------
     0.5000000000