全部产品
Search
文档中心

Hologres:Fungsi Agregat Tujuan Umum Hologres

更新时间:Nov 10, 2025

Hologres kompatibel dengan PostgreSQL dan mendukung sintaksis standar PostgreSQL untuk pengembangan data. Topik ini menjelaskan fungsi agregat tujuan umum yang didukung oleh Hologres.

Hologres mendukung sebagian dari fungsi yang tersedia di PostgreSQL. Untuk detail lebih lanjut tentang penggunaan fungsi-fungsi ini, lihat Fungsi Agregat. Tabel berikut mencantumkan fungsi agregat tujuan umum yang didukung oleh Hologres.

Fungsi

Deskripsi

APPROX_COUNT_DISTINCT

Menghitung jumlah baris yang memiliki nilai unik dalam kolom. Hasil dari fungsi ini adalah nilai perkiraan.

APPROX_PERCENTILE

Menghitung persentil perkiraan dari kolom numerik.

Catatan

Hologres mendukung APPROX_PERCENTILE dari versi V3.1 dan seterusnya.

ARRAY_AGG

Menggabungkan nilai-nilai dari suatu ekspresi ke dalam array.

AVG

Menghitung rata-rata dari nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT, FLOAT8, FLOAT4, atau INT.

BIT_AND

Menjalankan operasi AND bitwise pada nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT atau INT.

BIT_OR

Menjalankan operasi OR bitwise pada nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT atau INT.

BOOL_AND

Memeriksa apakah semua nilai yang dikembalikan oleh ekspresi BOOLEAN adalah TRUE.

BOOL_OR

Memeriksa apakah ada nilai yang dikembalikan oleh ekspresi BOOLEAN adalah TRUE.

CORR

Menghitung koefisien korelasi antara dua variabel.

COUNT

Mendapatkan jumlah baris dalam tabel tertentu atau jumlah baris input dari ekspresi BIGINT atau NUMERIC.

COVAR_POP

Menghitung kovarians populasi.

COVAR_SAMP

Menghitung kovarians sampel.

EVERY

Memeriksa apakah semua nilai dari ekspresi BOOLEAN adalah TRUE.

MAX

Mendapatkan nilai maksimum dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

MAX_BY

Membandingkan nilai-nilai dalam kolom (kolom y) untuk menemukan nilai maksimum, dan mengembalikan nilai kolom lain yang ditentukan (kolom x) dari baris yang sama.

MIN

Mendapatkan nilai minimum dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

MIN_BY

Membandingkan nilai-nilai dalam kolom (kolom y) untuk menemukan nilai minimum, dan mengembalikan nilai kolom lain yang ditentukan (kolom x) dari baris yang sama.

REGR_AVGX

Menghitung rata-rata dari variabel independen (X).

REGR_AVGY

Menghitung rata-rata dari variabel dependen (Y).

REGR_COUNT

Menghitung jumlah baris di mana tidak ada parameter input yang NULL.

REGR_R2

Menghitung kuadrat dari koefisien korelasi.

REGR_INTERCEPT

Menghitung titik potong-y dari persamaan linier dengan metode kuadrat terkecil yang ditentukan oleh pasangan (Y, X).

REGR_SLOPE

Menghitung kemiringan dari persamaan linier dengan metode kuadrat terkecil.

REGR_SXX

Menghitung jumlah kuadrat dari variabel independen (X), sebagai sum(X^2) - sum(X)^2/N.

REGR_SXY

Menghitung jumlah produk dari variabel independen (X) dan variabel dependen (Y), sebagai sum(X*Y) - sum(X) * sum(Y)/N.

SUM

Mendapatkan jumlah dari semua nilai dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

STDDEV

Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

STDDEV_POP

Menghitung deviasi standar populasi dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

STDDEV_SAMP

Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

STRING_AGG

Menggabungkan nilai-nilai non-NULL yang dikembalikan oleh ekspresi TEXT menjadi string menggunakan pemisah tertentu.

UNIQ

Menghitung jumlah baris yang memiliki nilai unik dalam kolom.

VARIANCE

Menghitung varians sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT atau NUMERIC.

VAR_POP

Menghitung varians populasi dari nilai-nilai yang dikembalikan oleh ekspresi FLOAT8, INT, atau NUMERIC.

VAR_SAMP

Menghitung varians sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, FLOAT8, atau NUMERIC.

Data sampel

-- Buat sebuah tabel.
CREATE TABLE example_table(
    c1 INT,           
    c2 BOOLEAN,      
    c3 VARCHAR(10),  
    c4 DECIMAL(3, 1),
    c5 TEXT,
    c6 FLOAT8,
    c7 FLOAT8
);

-- Masukkan data.
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

  • Deskripsi: Menghitung jumlah baris dengan nilai unik dalam sebuah kolom. Fungsi ini mengembalikan nilai perkiraan.

    APPROX_COUNT_DISTINCT ( <column> )
  • Parameter:

    kolom: Diperlukan. Menentukan kolom untuk menghitung jumlah baris unik secara perkiraan.

  • Catatan Penggunaan:

    Fungsi APPROX_COUNT_DISTINCT menggunakan Estimasi kardinalitas HyperLogLog untuk melakukan perhitungan COUNT DISTINCT yang tidak akurat. Perhitungan ini meningkatkan performa kueri, terutama ketika kolom memiliki banyak nilai diskrit. Tingkat kesalahan rata-rata biasanya berkisar antara 0,1% dan 1%. Fungsi ini cocok untuk skenario sensitif performa di mana tingkat kesalahan tertentu dapat diterima. Anda dapat menyesuaikan tingkat kesalahan menggunakan parameter berikut.

    SET hg_experimental_approx_count_distinct_precision = 20;
    • Nilai berkisar dari 12 hingga 20. Nilai default adalah 17.

    • Parameter presisi menentukan jumlah bit untuk bucketing dalam algoritma HyperLogLog. Nilai yang lebih besar menunjukkan lebih banyak bucket dan presisi teoretis yang lebih tinggi.

    • Nilai presisi yang lebih tinggi juga meningkatkan waktu komputasi dan overhead memori. Namun, overhead tersebut jauh lebih rendah dibandingkan dengan pernyataan COUNT DISTINCT ( column ) yang tepat. Oleh karena itu, kami merekomendasikan penggunaan APPROX_COUNT_DISTINCT daripada COUNT DISTINCT ( column ).

    • Ketika parameter presisi disetel ke nilai lebih dari 17, Hologres menggunakan algoritma HyperLogLog++. Algoritma ini mengoreksi nilai kembali untuk lebih mengurangi dan menstabilkan kesalahan.

      Sebagai contoh, jika Anda menyetel hg_experimental_approx_count_distinct_precision ke 20, tingkat kesalahan dapat dikurangi menjadi rentang 0,01% hingga 0,2% dalam sebagian besar kasus.

    Catatan

    Anda juga dapat melakukan perhitungan COUNT DISTINCT yang tepat menggunakan fungsi COUNT DISTINCT ( column ). Fungsi ini mengonsumsi lebih banyak sumber daya.

  • Contoh:

    Contoh berikut menggunakan tabel ORDERS dari dataset publik TPC-H yang disediakan oleh MaxCompute. Anda dapat menjalankan pernyataan SQL berikut secara langsung tanpa persiapan tambahan.

    -- Membuat tabel asing.
    IMPORT FOREIGN SCHEMA public_data
    LIMIT TO (ORDERS_10g)
    FROM SERVER odps_server INTO public options (if_table_exist 'update');
    
    -- Membuat tabel internal.
    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 'Order ID';
    COMMENT ON COLUMN ORDERS.O_CUSTKEY IS 'Customer ID';
    COMMENT ON COLUMN ORDERS.O_ORDERSTATUS IS 'Order status';
    COMMENT ON COLUMN ORDERS.O_TOTALPRICE IS 'Total price';
    COMMENT ON COLUMN ORDERS.O_ORDERDATE IS 'Order date';
    COMMENT ON COLUMN ORDERS.O_ORDERPRIORITY IS 'Order priority';
    COMMENT ON COLUMN ORDERS.O_CLERK IS 'Cashier';
    COMMENT ON COLUMN ORDERS.O_SHIPPRIORITY IS 'Shipping priority';
    COMMENT ON COLUMN ORDERS.O_COMMENT IS 'Comment';
    
    COMMIT;
    
    -- Mengimpor data ke tabel internal.
    INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
    • Hitung jumlah baris unik perkiraan dalam kolom O_CUSTKEY.

      SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

      Hasil berikut dikembalikan:

      approx_count_distinct
      -----------------------
                     1000422
    • Setel presisi global ke 20 dan hitung jumlah baris unik perkiraan dalam kolom O_CUSTKEY.

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

      Hasil berikut dikembalikan:

      approx_count_distinct
      -----------------------
                     1000422
    • Setel presisi tingkat sesi ke 20 dan hitung jumlah baris unik perkiraan dalam kolom O_CUSTKEY.

      --Setel presisi tingkat sesi ke 20.
      SET hg_experimental_approx_count_distinct_precision = 20;
      SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

      Hasil berikut dikembalikan:

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

APPROX_PERCENTILE

Catatan

Hologres mendukung APPROX_PERCENTILE mulai dari versi V3.1 dan yang lebih baru.

  • Deskripsi: Menghitung persentil perkiraan dari kolom numerik. Fungsi ini mengembalikan satu nilai perkiraan.

    APPROX_PERCENTILE (fraction) WITHIN GROUP (ORDER BY sort_expression)
  • Parameter:

    • fraction: Konstanta antara 0 dan 1. Sebagai contoh, 0,5 merepresentasikan median.

    • sort_expression: Menentukan kolom untuk menghitung persentil. Kolom ini harus dapat diurutkan.

  • Catatan Penggunaan:

    Fungsi APPROX_PERCENTILE menggunakan algoritma reservoir sampling. Fungsi ini mengambil sampel maksimal 8.192 elemen dan kemudian menghitung persentil dari sampel tersebut.

  • Contoh:

    Contoh berikut menghitung jumlah perkiraan nilai unik dalam kolom 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

  • Deskripsi: Menggabungkan nilai-nilai dari suatu ekspresi ke dalam array.

    ARRAY_AGG(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe data apa pun, kecuali JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, dan tipe array.

  • Nilai Kembali:

    Mengembalikan nilai dengan tipe ARRAY.

  • Contoh:

    SELECT ARRAY_AGG(c1) FROM example_table;

    Hasil berikut dikembalikan:

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

AVG

  • Deskripsi: Menghitung rata-rata dari nilai-nilai non-NULL yang dihasilkan oleh ekspresi BIGINT, FLOAT8, FLOAT4, atau INT.

    AVG(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe data BIGINT, FLOAT8, FLOAT4, atau INT.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT AVG(c7) FROM example_table;

    Hasil berikut akan dikembalikan.

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

BIT_AND

  • Deskripsi: Melakukan operasi bitwise AND pada nilai-nilai non-NULL yang dihasilkan oleh ekspresi BIGINT atau INT.

    BIT_AND(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe data BIGINT atau INT.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT BIT_AND(c1) FROM example_table;

    Hasilnya adalah sebagai berikut:

     bit_and
    ---------
           0

BIT_OR

  • Deskripsi: Melakukan operasi bitwise OR pada nilai-nilai non-NULL yang dihasilkan oleh ekspresi BIGINT atau INT.

    BIT_OR(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe data BIGINT atau INT.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter input.

  • Contoh:

    SELECT BIT_OR(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

     bit_or
    --------
          3

BOOL_AND

  • Deskripsi: Memeriksa apakah semua nilai yang dikembalikan oleh ekspresi BOOLEAN bernilai TRUE.

    BOOL_AND(bool)
  • Parameter:

    bool: Wajib. Ekspresi BOOLEAN.

  • Nilai Kembali:

    Mengembalikan nilai tipe BOOLEAN. Fungsi ini mengembalikan TRUE (t) jika semua nilai yang dihasilkan oleh ekspresi bernilai true, dan FALSE (f) jika tidak.

  • Contoh:

    SELECT BOOL_AND(c2) FROM example_table;

    Hasil berikut akan dikembalikan.

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

BOOL_OR

  • Deskripsi: Memeriksa apakah ada nilai yang dihasilkan oleh ekspresi BOOLEAN bernilai TRUE.

    BOOL_OR(bool)
  • Parameter:

    bool: Wajib. Ekspresi BOOLEAN.

  • Nilai Kembali:

    Mengembalikan nilai tipe BOOLEAN. Fungsi ini mengembalikan TRUE (t) jika ada nilai yang dihasilkan oleh ekspresi bernilai true, dan FALSE (f) jika tidak.

  • Contoh:

    SELECT BOOL_OR(c2) FROM example_table;

    Hasil berikut dikembalikan:

     bool_or
    ---------
     t

CORR

  • Deskripsi: Menghitung koefisien korelasi antara dua variabel.

    CORR(Y, X)
    Catatan

    Parameter harus bertipe data DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Parameter:

    Y dan X: Diperlukan. Ekspresi dengan tipe data DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Nilai kembali memiliki tipe data yang sama dengan parameter input.

  • Contoh:

    SELECT CORR(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan:

     corr
    ------
    

COUNT

  • Deskripsi: Menghitung jumlah baris dalam tabel yang ditentukan atau jumlah baris input dari ekspresi BIGINT atau NUMERIC.

    • Menghitung jumlah baris dalam tabel yang ditentukan.

      COUNT(*)
    • Menghitung jumlah baris input dari ekspresi BIGINT atau NUMERIC.

      COUNT(expression)

      expression: Diperlukan. Ekspresi non-NULL dengan tipe data BIGINT atau NUMERIC.

  • Nilai Kembali:

    Mengembalikan nilai dengan tipe data BIGINT.

  • Contoh:

    SELECT COUNT(*) FROM example_table;

    Hasil berikut dikembalikan:

     count
    -------
         2

COVAR_POP

  • Deskripsi: Menghitung kovariansi populasi.

    COVAR_POP(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi bertipe DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT COVAR_POP(c6, c7) FROM example_table;

    Hasil berikut dikembalikan:

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

COVAR_SAMP

  • Deskripsi: Menghitung kovariansi sampel.

    COVAR_SAMP(Y, X)
  • Parameter

    Y dan X: Diperlukan. Harus berupa ekspresi DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh

    SELECT COVAR_SAMP(c6, c7) FROM example_table;

    Hasil berikut dikembalikan:

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

EVERY

  • Deskripsi: Memeriksa apakah semua nilai dari ekspresi BOOLEAN bernilai TRUE.

    EVERY(bool)
  • Parameter:

    bool: Wajib. Sebuah ekspresi BOOLEAN.

  • Nilai Kembali:

    Mengembalikan nilai dengan tipe BOOLEAN. Fungsi ini mengembalikan TRUE (t) jika semua nilai dari ekspresi bernilai benar, dan FALSE (f) jika sebaliknya.

  • Contoh:

    SELECT EVERY(c2) FROM example_table;

    Hasil berikut dikembalikan:

     every
    -------
     f

MAX

  • Deskripsi: Mengembalikan nilai maksimum dari ekspresi dengan tipe data BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

    MAX(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe data BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter input.

  • Contoh:

    SELECT MAX(c1) FROM example_table;

    Hasil berikut akan dikembalikan:

     max
    -----
       2

MAX_BY

  • Deskripsi: Membandingkan nilai-nilai dalam kolom (kolom y) untuk menemukan nilai maksimum dan mengembalikan nilai dari kolom lain yang ditentukan (kolom x) dari baris yang sesuai.

    MAX_BY(x, y);
    Catatan

    Tipe numerik dibandingkan berdasarkan nilai numeriknya. Tipe non-numerik dibandingkan berdasarkan urutan pengurutan kamus mereka.

  • Parameter:

    • y: Diperlukan. Menentukan kolom dari mana akan diambil nilai maksimum. Baris dengan nilai NULL pada kolom y tidak termasuk dalam perhitungan.

    • x: Diperlukan. Menentukan kolom dari mana akan diambil nilai yang sesuai dengan nilai maksimum di kolom y.

  • Catatan Penggunaan:

    Fungsi MAX_BY hanya didukung di Hologres V1.3.36 dan versi lebih baru.

    Catatan

    Jika versi instans Anda lebih lama dari V1.3.36, Anda dapat bergabung dengan grup DingTalk Hologres untuk meminta peningkatan instans. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan lebih banyak dukungan online?

  • Nilai Kembali:

    • Fungsi ini mengembalikan nilai dari kolom x yang sesuai dengan nilai maksimum di kolom y.

    • Jika semua nilai di kolom y adalah NULL, fungsi mengembalikan NULL.

    • Jika fungsi MAX_BY menemukan beberapa baris dengan nilai maksimum di kolom y, maka ia mengembalikan nilai maksimum dari nilai-nilai yang sesuai di kolom x.

  • Contoh:

    --Data contoh
    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);

    Kueri untuk nilai di kolom name yang sesuai dengan nilai maksimum di kolom cost. Dalam contoh ini, terdapat beberapa nilai maksimum.

    SELECT max_by(name, cost) FROM test;

    Hasil berikut dikembalikan:

     max_by
    --------
     aaa

MIN

  • Deskripsi: Mengembalikan nilai minimum dari ekspresi dengan tipe data BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

    MIN(expression)
  • Parameter:

    expression: Wajib. Harus bertipe BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT MIN(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

     min
    -----
       1

MIN_BY

  • Deskripsi: Membandingkan nilai dalam kolom (kolom y) untuk menemukan nilai minimum dan mengembalikan nilai dari kolom lain yang ditentukan (kolom x) dari baris yang sesuai.

    MIN_BY(x, y);
    Catatan

    Tipe numerik dibandingkan berdasarkan nilai numeriknya. Tipe non-numerik dibandingkan berdasarkan urutan pengurutan kamus.

  • Parameter:

    • y: Diperlukan. Menentukan kolom dari mana nilai minimum akan diambil. Baris dengan nilai NULL pada kolom y tidak termasuk dalam perhitungan.

    • x: Diperlukan. Menentukan kolom dari mana nilai yang sesuai dengan nilai minimum di kolom y akan diambil.

  • Catatan Penggunaan:

    Fungsi MAX_BY dan MIN_BY hanya didukung di Hologres V1.3.36 dan versi lebih baru.

    Catatan

    Jika versi instans Anda lebih lama dari V1.3.36, Anda dapat bergabung dengan grup DingTalk Hologres untuk meminta peningkatan instans. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan lebih banyak dukungan online?

  • Nilai Kembali:

    • Fungsi ini mengembalikan nilai dari kolom x yang sesuai dengan nilai minimum di kolom y.

    • Jika semua nilai di kolom y adalah NULL, fungsi mengembalikan NULL.

    • Jika fungsi MIN_BY menemukan beberapa baris dengan nilai minimum di kolom y, maka ia mengembalikan nilai minimum dari nilai-nilai yang sesuai di kolom x.

  • Contoh:

    --Data contoh
    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);

    Kueri untuk nilai di kolom nama yang sesuai dengan nilai minimum di kolom biaya.

    SELECT MIN_BY(name, cost) FROM test;

    Hasil berikut dikembalikan:

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

REGR_AVGX

  • Deskripsi: Menghitung rata-rata dari variabel independen (X).

    REGR_AVGX(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi bertipe DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT REGR_AVGX(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan.

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

REGR_AVGY

  • Deskripsi: Menghitung rata-rata dari variabel dependen (Y).

    REGR_AVGY(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi bertipe DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT REGR_AVGY(c6, c7) FROM example_table;

    Hasil berikut dikembalikan:

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

REGR_COUNT

  • Deskripsi: Menghitung jumlah baris di mana kedua parameter input tidak NULL.

    REGR_COUNT(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Mengembalikan nilai tipe BIGINT.

  • Contoh:

    SELECT REGR_COUNT(c6, c7) FROM example_table;

    Hasil berikut dikembalikan:

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

REGR_R2

  • Deskripsi: Menghitung kuadrat dari koefisien korelasi.

    REGR_R2(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi dengan tipe data DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan parameter input.

  • Contoh:

    SELECT REGR_R2(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan.

     regr_r2
    ---------
           1

REGR_INTERCEPT

  • Deskripsi: Menghitung titik potong-y dari persamaan linear menggunakan metode kuadrat terkecil berdasarkan pasangan (Y, X).

    REGR_INTERCEPT(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi bertipe DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT REGR_INTERCEPT(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan.

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

REGR_SLOPE

  • Deskripsi: Menghitung kemiringan persamaan linear menggunakan metode kuadrat terkecil.

    REGR_SLOPE(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi bertipe DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT REGR_SLOPE(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan.

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

REGR_SXX

  • Deskripsi: Menghitung jumlah kuadrat dari variabel independen (X) menggunakan rumus sum(X^2) - sum(X)^2/N.

    REGR_SXX(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Harus berupa ekspresi dengan tipe data DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter input.

  • Contoh:

    SELECT REGR_SXX(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan:

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

REGR_SXY

  • Deskripsi: Menghitung jumlah produk dari variabel independen (X) dan variabel dependen (Y) menggunakan rumus sum(X × Y) - sum(X) × sum(Y)/N.

    REGR_SXY(Y, X)
  • Parameter:

    Y dan X: Diperlukan. Ekspresi dengan tipe data DOUBLE PRECISION, FLOAT, atau FLOAT8.

  • Nilai Kembali:

    Tipe data nilai kembali sama dengan tipe data parameter.

  • Contoh:

    SELECT REGR_SXY(c6, c7) FROM example_table;

    Hasil berikut akan dikembalikan.

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

SUM

  • Deskripsi: Menghitung total semua nilai dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

    SUM(expression)
  • Parameter

    expression: Diperlukan. Ekspresi dengan tipe data BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC.

  • Nilai Kembali:

    Tipe data nilai kembali sesuai dengan tipe data parameter input.

  • Contoh

    SELECT SUM(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

     sum
    -----
       3

STDDEV

  • Deskripsi: Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

    STDDEV(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe INT, NUMERIC, atau FLOAT8.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC atau FLOAT8.

  • Contoh:

    SELECT STDDEV(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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

STDDEV_POP

  • Deskripsi: Menghitung deviasi standar populasi dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

    STDDEV_POP(expression)	
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe INT, NUMERIC, atau FLOAT8.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC atau FLOAT8.

  • Contoh:

    SELECT STDDEV_POP(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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

STDDEV_SAMP

  • Deskripsi: Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8.

    STDDEV_SAMP(expression)	
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe INT, NUMERIC, atau FLOAT8.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC atau FLOAT8.

  • Contoh:

    SELECT STDDEV_SAMP(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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

STRING_AGG

  • Deskripsi: Menggabungkan nilai-nilai non-NULL yang dihasilkan oleh ekspresi TEXT menjadi satu string menggunakan pemisah tertentu.

    STRING_AGG(<expression> TEXT, <delimiter> TEXT)
  • Parameter:

    • expression: Diperlukan. String sumber.

    • delimiter: Diperlukan. Pemisah.

  • Nilai Kembali:

    Mengembalikan nilai dengan tipe TEXT.

  • Contoh:

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

    Hasil berikut dikembalikan:

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

UNIQ

  • Deskripsi: Menghitung jumlah baris yang memiliki nilai unik dalam kolom.

    UNIQ ( < column > );
  • Parameter:

    kolom: Diperlukan. Menentukan kolom yang akan dihitung jumlah baris dengan nilai unik. Kolom ini dapat berupa salah satu tipe data berikut: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIMETZ, dan UUID.

  • Catatan Penggunaan:

    • Fungsi UNIQ hanya didukung di Hologres V1.3 dan versi lebih baru.

      Catatan

      Jika versi instans Anda lebih lama dari V1.3, lihat Kesalahan umum saat mempersiapkan peningkatan atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih banyak?.

    • Fungsi UNIQ bekerja lebih baik daripada COUNT DISTINCT hanya jika pernyataan SQL mencakup klausa GROUP BY dan nilai bidang GROUP BY terdistribusi secara merata tanpa kesenjangan data.

    • Secara umum, UNIQ lebih efisien dibandingkan COUNT DISTINCT ketika kunci GROUP BY memiliki kardinalitas tinggi. Selain itu, UNIQ menggunakan memori lebih sedikit dibandingkan COUNT DISTINCT. Jika Anda mengalami kesalahan kehabisan memori saat menggunakan COUNT DISTINCT, Anda dapat menggunakan UNIQ sebagai alternatif.

    • Sejak Hologres V2.1, performa COUNT DISTINCT telah dioptimalkan secara signifikan untuk berbagai skenario, termasuk yang melibatkan satu atau beberapa fungsi COUNT DISTINCT, kesenjangan data, atau pernyataan SQL tanpa klausa GROUP BY. Anda tidak perlu lagi menulis ulang kueri secara manual untuk menggunakan UNIQ demi performa yang lebih baik. Untuk informasi lebih lanjut, lihat Optimasi Count Distinct.

  • Contoh

    Contoh berikut menggunakan tabel ORDERS dari dataset publik TPC-H yang disediakan oleh MaxCompute. Anda dapat menjalankan pernyataan SQL berikut secara langsung tanpa persiapan tambahan.

    -- Membuat tabel asing.
    IMPORT FOREIGN SCHEMA public_data
    LIMIT TO (ORDERS_10g)
    FROM SERVER odps_server INTO public options (if_table_exist 'update');
    
    -- Membuat tabel internal.
    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 'Order ID';
    COMMENT ON COLUMN ORDERS.O_CUSTKEY IS 'Customer ID';
    COMMENT ON COLUMN ORDERS.O_ORDERSTATUS IS 'Order status';
    COMMENT ON COLUMN ORDERS.O_TOTALPRICE IS 'Total price';
    COMMENT ON COLUMN ORDERS.O_ORDERDATE IS 'Order date';
    COMMENT ON COLUMN ORDERS.O_ORDERPRIORITY IS 'Order priority';
    COMMENT ON COLUMN ORDERS.O_CLERK IS 'Cashier';
    COMMENT ON COLUMN ORDERS.O_SHIPPRIORITY IS 'Shipping priority';
    COMMENT ON COLUMN ORDERS.O_COMMENT IS 'Comment';
    
    COMMIT;
    
    -- Mengimpor data ke tabel internal.
    INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
    • Hitung jumlah baris unik di kolom O_CUSTKEY dari tabel ORDERS.

      SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;

      Hasil berikut dikembalikan:

        uniq
      --------
       999982
    • Hitung jumlah nilai unik O_CUSTKEY untuk setiap O_ORDERSTATUS di tabel ORDERS.

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

      Hasil berikut dikembalikan:

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

VARIANCE

  • Deskripsi: Menghitung varian sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT atau NUMERIC.

    VARIANCE(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe INT atau NUMERIC.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC.

  • Contoh:

    SELECT VARIANCE(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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

VAR_POP

  • Deskripsi: Menghitung varians populasi dari nilai-nilai yang dikembalikan oleh ekspresi FLOAT8, INT, atau NUMERIC.

    VAR_POP(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe FLOAT8, INT, atau NUMERIC.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC atau FLOAT8.

  • Contoh:

    SELECT VAR_POP(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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

VAR_SAMP

  • Deskripsi: Menghitung varians sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, FLOAT8, atau NUMERIC.

    VAR_SAMP(expression)
  • Parameter:

    expression: Diperlukan. Ekspresi dengan tipe INT, FLOAT8, atau NUMERIC.

  • Nilai Kembali:

    Mengembalikan nilai bertipe NUMERIC atau FLOAT8.

  • Contoh:

    SELECT VAR_SAMP(c1) FROM example_table;

    Hasil berikut akan dikembalikan.

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