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 |
Menghitung jumlah baris yang memiliki nilai unik dalam kolom. Hasil dari fungsi ini adalah nilai perkiraan. | |
Menghitung persentil perkiraan dari kolom numerik. Catatan Hologres mendukung APPROX_PERCENTILE dari versi V3.1 dan seterusnya. | |
Menggabungkan nilai-nilai dari suatu ekspresi ke dalam array. | |
Menghitung rata-rata dari nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT, FLOAT8, FLOAT4, atau INT. | |
Menjalankan operasi AND bitwise pada nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT atau INT. | |
Menjalankan operasi OR bitwise pada nilai-nilai non-NULL yang dikembalikan oleh ekspresi BIGINT atau INT. | |
Memeriksa apakah semua nilai yang dikembalikan oleh ekspresi BOOLEAN adalah TRUE. | |
Memeriksa apakah ada nilai yang dikembalikan oleh ekspresi BOOLEAN adalah TRUE. | |
Menghitung koefisien korelasi antara dua variabel. | |
Mendapatkan jumlah baris dalam tabel tertentu atau jumlah baris input dari ekspresi BIGINT atau NUMERIC. | |
Menghitung kovarians populasi. | |
Menghitung kovarians sampel. | |
Memeriksa apakah semua nilai dari ekspresi BOOLEAN adalah TRUE. | |
Mendapatkan nilai maksimum dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC. | |
Membandingkan nilai-nilai dalam kolom (kolom y) untuk menemukan nilai maksimum, dan mengembalikan nilai kolom lain yang ditentukan (kolom x) dari baris yang sama. | |
Mendapatkan nilai minimum dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC. | |
Membandingkan nilai-nilai dalam kolom (kolom y) untuk menemukan nilai minimum, dan mengembalikan nilai kolom lain yang ditentukan (kolom x) dari baris yang sama. | |
Menghitung rata-rata dari variabel independen (X). | |
Menghitung rata-rata dari variabel dependen (Y). | |
Menghitung jumlah baris di mana tidak ada parameter input yang NULL. | |
Menghitung kuadrat dari koefisien korelasi. | |
Menghitung titik potong-y dari persamaan linier dengan metode kuadrat terkecil yang ditentukan oleh pasangan | |
Menghitung kemiringan dari persamaan linier dengan metode kuadrat terkecil. | |
Menghitung jumlah kuadrat dari variabel independen (X), sebagai | |
Menghitung jumlah produk dari variabel independen (X) dan variabel dependen (Y), sebagai | |
Mendapatkan jumlah dari semua nilai dari ekspresi BIGINT, FLOAT8, FLOAT4, INT, atau NUMERIC. | |
Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8. | |
Menghitung deviasi standar populasi dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8. | |
Menghitung deviasi standar sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT, NUMERIC, atau FLOAT8. | |
Menggabungkan nilai-nilai non-NULL yang dikembalikan oleh ekspresi TEXT menjadi string menggunakan pemisah tertentu. | |
Menghitung jumlah baris yang memiliki nilai unik dalam kolom. | |
Menghitung varians sampel dari nilai-nilai yang dikembalikan oleh ekspresi INT atau NUMERIC. | |
Menghitung varians populasi dari nilai-nilai yang dikembalikan oleh ekspresi FLOAT8, INT, atau NUMERIC. | |
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_DISTINCTmenggunakan 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 antara0,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 penggunaanAPPROX_COUNT_DISTINCTdaripadaCOUNT 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.
CatatanAnda 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 ----------------------- 1000422Setel 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 ----------------------- 1000422Setel 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
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_PERCENTILEmenggunakan 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)CatatanParameter 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);CatatanTipe 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.
CatatanJika 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);CatatanTipe 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.
CatatanJika 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.
CatatanJika 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 -------- 999982Hitung 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