Hologres, PostgreSQL toplama işlevlerinin bir alt kümesini destekler. Bu konuda desteklenen işlevler; söz dizimleri, parametreleri ve örnekleriyle birlikte listelenmiştir.
PostgreSQL toplama işlevlerine ilişkin tam teknik özellikler için bkz. Toplama İşlevleri.
Desteklenen işlevler
Aşağıdaki tabloda kategorilere göre gruplandırılmış tüm desteklenen işlevler listelenmektedir.
Genel toplama
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| AVG | BIGINT, FLOAT4, FLOAT8, INT | Girişle aynı | NULL olmayan değerlerin ortalaması |
| COUNT | * veya herhangi bir ifade |
BIGINT | Satır sayısı veya NULL olmayan giriş sayısı |
| MAX | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Girişle aynı | En büyük değer |
| MAX_BY | Herhangi biri (x), karşılaştırılabilir herhangi biri (y) | x ile aynı | Maksimum y değerine sahip satırdaki x değeri |
| MIN | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Girişle aynı | En küçük değer |
| MIN_BY | Herhangi biri (x), karşılaştırılabilir herhangi biri (y) | x ile aynı | Minimum y değerine sahip satırdaki x değeri |
| SUM | BIGINT, FLOAT4, FLOAT8, INT, NUMERIC | Girişle aynı | Tüm değerlerin toplamı |
| ARRAY_AGG | Herhangi biri (JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, diziler hariç) | ARRAY | Bir dizi halinde toplanan değerler |
| STRING_AGG | TEXT, TEXT | TEXT | Bir ayırıcı ile birleştirilen NULL olmayan değerler |
Boolean toplama
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| BOOL_AND | BOOLEAN | BOOLEAN | Tüm değerler true ise TRUE döner |
| BOOL_OR | BOOLEAN | BOOLEAN | Herhangi bir değer true ise TRUE döner |
| EVERY | BOOLEAN | BOOLEAN | Tüm değerler true ise TRUE döner |
Bit düzeyinde toplama
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| BIT_AND | BIGINT, INT | Girişle aynı | NULL olmayan değerlerin bit düzeyinde AND işlemi |
| BIT_OR | BIGINT, INT | Girişle aynı | NULL olmayan değerlerin bit düzeyinde OR işlemi |
Kardinalite tahmini (HyperLogLog kullanarak)
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| APPROX_COUNT_DISTINCT | Herhangi biri | BIGINT | Yaklaşık distinct sayısı (HyperLogLog) |
| UNIQ | SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIMETZ, UUID | BIGINT | Bir sütundaki değerlerin distinct sayısı; yüksek kardinaliteli GROUP BY için optimize edilmiştir |
Yüzdelik dilim tahmini
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| APPROX_PERCENTILE | NUMERIC | NUMERIC | Yaklaşık yüzdelik dilim (rezervuar örnekleme; V3.1+) |
İstatistikler
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| CORR | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Korelasyon katsayısı |
| COVAR_POP | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Popülasyon kovaryansı |
| COVAR_SAMP | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Örneklem kovaryansı |
| STDDEV | INT, NUMERIC, FLOAT8 | NUMERIC veya FLOAT8 | Örneklem standart sapması |
| STDDEV_POP | INT, NUMERIC, FLOAT8 | NUMERIC veya FLOAT8 | Popülasyon standart sapması |
| STDDEV_SAMP | INT, NUMERIC, FLOAT8 | NUMERIC veya FLOAT8 | Örneklem standart sapması |
| VARIANCE | INT, NUMERIC | NUMERIC | Örneklem varyansı |
| VAR_POP | FLOAT8, INT, NUMERIC | NUMERIC veya FLOAT8 | Popülasyon varyansı |
| VAR_SAMP | INT, FLOAT8, NUMERIC | NUMERIC veya FLOAT8 | Örneklem varyansı |
Doğrusal regresyon
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| REGR_AVGX | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Bağımsız değişkenin (X) ortalaması |
| REGR_AVGY | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Bağımlı değişkenin (Y) ortalaması |
| REGR_COUNT | DOUBLE PRECISION, FLOAT, FLOAT8 | BIGINT | Her iki girişin de NULL olmadığı satırlar |
| REGR_INTERCEPT | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | En küçük kareler uyumlu doğrunun Y eksenini kestiği nokta |
| REGR_R2 | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | Korelasyon katsayısının karesi |
| REGR_SLOPE | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | En küçük kareler uyumlu doğrunun eğimi |
| REGR_SXX | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | X'in karelerinin toplamı |
| REGR_SXY | DOUBLE PRECISION, FLOAT, FLOAT8 | Girişle aynı | X ve Y çarpımlarının toplamı |
Örnek veriler
Aşağıdaki örneklerde example_table kullanılmaktadır. Tabloyu oluşturmak ve örnek verileri eklemek için bu kurulum betiğini çalıştırın.
-- Create a table.
CREATE TABLE example_table(
c1 INT,
c2 BOOLEAN,
c3 VARCHAR(10),
c4 DECIMAL(3, 1),
c5 TEXT,
c6 FLOAT8,
c7 FLOAT8
);
-- Insert 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
HyperLogLog kardinalite tahminini kullanarak yaklaşık bir distinct sayısı döndürür. Ortalama hata oranı %0,1 ile %1 arasındadır; bu durum, tam COUNT DISTINCT ( column ) işlemine kıyasla çok daha düşük bir yük getirir.
APPROX_COUNT_DISTINCT ( <column> )
Parametreler
| Parametre | Açıklama |
|---|---|
column |
Gerekli. Yaklaşık distinct sayısının hesaplanacağı sütun. |
Kullanım notları
HyperLogLog algoritmasının hassasiyeti bir gruplama parametresi ile kontrol edilir:
SET hg_experimental_approx_count_distinct_precision = 20;
| Ayar | Ayrıntılar |
|---|---|
| Geçerli aralık | 12–20 |
| Varsayılan | 17 |
| Etkisi | Daha büyük değer = daha fazla grup = daha yüksek hassasiyet, ancak daha fazla hesaplama ve bellek kullanımı |
| Hassasiyet > 17 | HyperLogLog++ algoritmasına geçer; hatayı daha da azaltır ve stabilize eder |
| Hassasiyet = 20 | Çoğu durumda hatayı %0,01–%0,2'ye düşürür |
Bu parametreyi oturum düzeyinde SET ile veya veritabanı düzeyinde ALTER DATABASE ile ayarlayın:
-- Session level
SET hg_experimental_approx_count_distinct_precision = 20;
-- Database level
ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
Tam bir distinct sayısı hesaplamak için COUNT DISTINCT ( column ) kullanın. Bu yöntem daha fazla kaynak tüketir.
Örnek
Aşağıdaki örnekler, MaxCompute tarafından sağlanan TPC-H genel veri kümesindeki ORDERS tablosunu kullanır. Sorguları çalıştırmadan önce gerekli tabloları oluşturmak için aşağıdaki kurulum betiğini çalıştırın.
-- Create a foreign table.
IMPORT FOREIGN SCHEMA public_data
LIMIT TO (ORDERS_10g)
FROM SERVER odps_server INTO public options (if_table_exist 'update');
-- Create an internal table.
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;
-- Import data to the internal table.
INSERT INTO ORDERS SELECT * FROM ORDERS_10g;
O_CUSTKEY sütunundaki yaklaşık distinct sayısını hesaplayın:
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Sonuç:
approx_count_distinct
-----------------------
1000422
Global hassasiyeti 20 olarak ayarlayarak hesaplayın:
ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Sonuç:
approx_count_distinct
-----------------------
1000422
Oturum düzeyinde hassasiyeti 20 olarak ayarlayarak hesaplayın:
SET hg_experimental_approx_count_distinct_precision = 20;
SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
Sonuç:
approx_count_distinct
-----------------------
998854
APPROX_PERCENTILE
Hologres V3.1 ve sonraki sürümlerde desteklenir.
Rezervuar örnekleme (en fazla 8.192 öğe) kullanarak sayısal bir sütunun yaklaşık yüzdelik dilimini döndürür.
APPROX_PERCENTILE (fraction) WITHIN GROUP (ORDER BY sort_expression)
Parametreler
| Parametre | Açıklama |
|---|---|
fraction |
Gerekli. 0 ile 1 arasında bir sabit değer. Örneğin, 0.5 medyanı temsil eder. |
sort_expression |
Gerekli. Yüzdelik dilimin hesaplanacağı sütun. Sıralanabilir olmalıdır. |
Örnek
Bir maaş sütunu için Q1, medyan ve Q3 değerlerini hesaplayın:
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
Herhangi bir ifadenin değerlerini bir dizi halinde toplar.
ARRAY_AGG(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID ve dizi türleri dışındaki herhangi bir veri türündeki ifade. |
Dönüş değeri
ARRAY türü.
Örnek
SELECT ARRAY_AGG(c1) FROM example_table;
Sonuç:
array_agg
-----------
{2,1}
AVG
NULL olmayan değerlerin ortalamasını döndürür.
AVG(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT, FLOAT8, FLOAT4 veya INT türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT AVG(c7) FROM example_table;
Sonuç:
avg
----------
1.500000
BIT_AND
Tüm NULL olmayan değerler üzerinde bit düzeyinde AND işlemi gerçekleştirir.
BIT_AND(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT veya INT türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT BIT_AND(c1) FROM example_table;
Sonuç:
bit_and
---------
0
BIT_OR
Tüm NULL olmayan değerler üzerinde bit düzeyinde OR işlemi gerçekleştirir.
BIT_OR(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT veya INT türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT BIT_OR(c1) FROM example_table;
Sonuç:
bit_or
--------
3
BOOL_AND
Bir Boolean ifadesinin tüm değerleri true ise TRUE döner; aksi takdirde FALSE döner.
BOOL_AND(bool)
Parametreler
| Parametre | Açıklama |
|---|---|
bool |
Gerekli. BOOLEAN türünde bir ifade. |
Dönüş değeri
BOOLEAN. Tüm değerler true ise t döner, aksi takdirde f döner.
Örnek
SELECT BOOL_AND(c2) FROM example_table;
Sonuç:
bool_and
----------
f
BOOL_OR
Bir Boolean ifadesinin herhangi bir değeri true ise TRUE döner; aksi takdirde FALSE döner.
BOOL_OR(bool)
Parametreler
| Parametre | Açıklama |
|---|---|
bool |
Gerekli. BOOLEAN türünde bir ifade. |
Dönüş değeri
BOOLEAN. Herhangi bir değer true ise t döner, aksi takdirde f döner.
Örnek
SELECT BOOL_OR(c2) FROM example_table;
Sonuç:
bool_or
---------
t
CORR
İki değişken arasındaki korelasyon katsayısını hesaplar. Her iki parametre de DOUBLE PRECISION, FLOAT veya FLOAT8 türünde olmalıdır.
CORR(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade (bağımlı değişken). |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade (bağımsız değişken). |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT CORR(c6, c7) FROM example_table;
COUNT
Satır sayısını veya bir ifadedeki NULL olmayan değerlerin sayısını döndürür.
COUNT(*)NULL değerler dahil tüm satırları sayar.COUNT(expression)yalnızca NULL olmayan değerleri sayar.
-- Count all rows, including rows with NULL values.
COUNT(*)
-- Count only non-NULL input values.
COUNT(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
* |
Sütunlarda NULL içeren satırlar dahil tüm satırları sayar. |
expression |
Gerekli. NULL olmayan BIGINT veya NUMERIC türünde bir ifade. İfadenin NULL olduğu satırlar sayılmaz. |
Dönüş değeri
BIGINT.
Örnek
SELECT COUNT(*) FROM example_table;
Sonuç:
count
-------
2
COVAR_POP
İki değişkenin popülasyon kovaryansını hesaplar.
COVAR_POP(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT COVAR_POP(c6, c7) FROM example_table;
Sonuç:
covar_pop
---------------------
3.5527136788005e-15
COVAR_SAMP
İki değişkenin örneklem kovaryansını hesaplar.
COVAR_SAMP(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT COVAR_SAMP(c6, c7) FROM example_table;
Sonuç:
covar_samp
--------------------
7.105427357601e-15
EVERY
Bir Boolean ifadesinin tüm değerleri true ise TRUE döner; aksi takdirde FALSE döner.
EVERY(bool)
Parametreler
| Parametre | Açıklama |
|---|---|
bool |
Gerekli. BOOLEAN türünde bir ifade. |
Dönüş değeri
BOOLEAN. Tüm değerler true ise t döner, aksi takdirde f döner.
Örnek
SELECT EVERY(c2) FROM example_table;
Sonuç:
every
-------
f
MAX
En büyük değeri döndürür.
MAX(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT, FLOAT8, FLOAT4, INT veya NUMERIC türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT MAX(c1) FROM example_table;
Sonuç:
max
-----
2
MAX_BY
Hologres V1.3.36 ve sonraki sürümlerde desteklenir. Daha eski sürümler için bkz. Daha fazla çevrimiçi desteği nasıl alabilirsiniz?
y sütunundaki en büyük değere sahip satırı bulur ve x sütunundan karşılık gelen değeri döndürür. Örneğin, bir tabloda name ve cost sütunları varsa MAX_BY(name, cost) en yüksek maliyete sahip öğenin adını döndürür.
Sayısal türler sayısal değere göre karşılaştırılır. Sayısal olmayan türler sözlük sıralama düzenine göre karşılaştırılır.
MAX_BY(x, y)
Parametreler
| Parametre | Açıklama |
|---|---|
y |
Gerekli. En büyük değerin bulunacağı sütun. y değeri NULL olan satırlar hariç tutulur. |
x |
Gerekli. Maksimum y değerine karşılık gelen değerin döndürüleceği sütun. |
Dönüş değeri
ydeğerinin maksimum olduğu satırdakixdeğerini döndürür.yiçindeki tüm değerler NULL ise NULL döner.Birden fazla satır maksimum
ydeğerini paylaşıyorsa karşılık gelenxdeğerlerinin en büyüğünü döndürür.
Örnek
-- Sample data
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);
En yüksek maliyete karşılık gelen adı döndürün. Birden fazla satır maksimum maliyeti (300) paylaştığından işlev bu satırlar arasındaki maksimum name değerini döndürür:
SELECT max_by(name, cost) FROM test;
Sonuç:
max_by
--------
aaa
MIN
En küçük değeri döndürür.
MIN(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT, FLOAT8, FLOAT4, INT veya NUMERIC türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT MIN(c1) FROM example_table;
Sonuç:
min
-----
1
MIN_BY
Hologres V1.3.36 ve sonraki sürümlerde desteklenir. Daha eski sürümler için bkz. Daha fazla çevrimiçi desteği nasıl alabilirsiniz?
y sütunundaki en küçük değere sahip satırı bulur ve x sütunundan karşılık gelen değeri döndürür. Örneğin, bir tabloda name ve cost sütunları varsa MIN_BY(name, cost) en düşük maliyete sahip öğenin adını döndürür.
Sayısal türler sayısal değere göre karşılaştırılır. Sayısal olmayan türler sözlük sıralama düzenine göre karşılaştırılır.
MIN_BY(x, y)
Parametreler
| Parametre | Açıklama |
|---|---|
y |
Gerekli. En küçük değerin bulunacağı sütun. y değeri NULL olan satırlar hariç tutulur. |
x |
Gerekli. Minimum y değerine karşılık gelen değerin döndürüleceği sütun. |
Dönüş değeri
ydeğerinin minimum olduğu satırdakixdeğerini döndürür.yiçindeki tüm değerler NULL ise NULL döner.Birden fazla satır minimum
ydeğerini paylaşıyorsa karşılık gelenxdeğerlerinin en küçüğünü döndürür.
Örnek
-- Sample data
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);
En düşük maliyete karşılık gelen adı döndürün:
SELECT MIN_BY(name, cost) FROM test;
Sonuç:
min_by
--------
cc
(1 row)
REGR_AVGX
Bağımsız değişkenin (X) ortalamasını hesaplar.
REGR_AVGX(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_AVGX(c6, c7) FROM example_table;
Sonuç:
regr_avgx
-----------
4.8
REGR_AVGY
Bağımlı değişkenin (Y) ortalamasını hesaplar.
REGR_AVGY(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_AVGY(c6, c7) FROM example_table;
Sonuç:
regr_avgy
-----------
6
REGR_COUNT
Her iki girişin de NULL olmadığı satır sayısını döndürür.
REGR_COUNT(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
BIGINT.
Örnek
SELECT REGR_COUNT(c6, c7) FROM example_table;
Sonuç:
regr_count
------------
2
REGR_R2
Korelasyon katsayısının karesini (R²) hesaplar.
REGR_R2(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_R2(c6, c7) FROM example_table;
Sonuç:
regr_r2
---------
1
REGR_INTERCEPT
(Y, X) çiftleri tarafından belirlenen en küçük kareler uyumlu doğrusal denklemin y eksenini kestiği noktayı hesaplar.
REGR_INTERCEPT(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_INTERCEPT(c6, c7) FROM example_table;
Sonuç:
regr_intercept
----------------
6
REGR_SLOPE
En küçük kareler uyumlu doğrusal denklemin eğimini hesaplar.
REGR_SLOPE(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_SLOPE(c6, c7) FROM example_table;
Sonuç:
regr_slope
----------------------
7.34031751818285e-16
REGR_SXX
Bağımsız değişkenin (X) karelerinin toplamını şu şekilde hesaplar: sum(X^2) - sum(X)^2/N.
REGR_SXX(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_SXX(c6, c7) FROM example_table;
Sonuç:
regr_sxx
----------
9.68
REGR_SXY
Bağımsız değişken (X) ile bağımlı değişkenin (Y) çarpımlarının toplamını şu şekilde hesaplar: sum(X*Y) - sum(X) * sum(Y)/N.
REGR_SXY(Y, X)
Parametreler
| Parametre | Açıklama |
|---|---|
Y |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
X |
Gerekli. DOUBLE PRECISION, FLOAT veya FLOAT8 türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT REGR_SXY(c6, c7) FROM example_table;
Sonuç:
regr_sxy
--------------------
7.105427357601e-15
SUM
Tüm değerlerin toplamını döndürür.
SUM(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. BIGINT, FLOAT8, FLOAT4, INT veya NUMERIC türünde bir ifade. |
Dönüş değeri
Girişle aynı veri türü.
Örnek
SELECT SUM(c1) FROM example_table;
Sonuç:
sum
-----
3
STDDEV
Örneklem standart sapmasını döndürür.
STDDEV(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. INT, NUMERIC veya FLOAT8 türünde bir ifade. |
Dönüş değeri
NUMERIC veya FLOAT8.
Örnek
SELECT STDDEV(c1) FROM example_table;
Sonuç:
stddev
--------------
0.7071067811
STDDEV_POP
Popülasyon standart sapmasını döndürür.
STDDEV_POP(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. INT, NUMERIC veya FLOAT8 türünde bir ifade. |
Dönüş değeri
NUMERIC veya FLOAT8.
Örnek
SELECT STDDEV_POP(c1) FROM example_table;
Sonuç:
stddev_pop
--------------
0.5000000000
STDDEV_SAMP
Örneklem standart sapmasını döndürür. STDDEV ile eşdeğerdir.
STDDEV_SAMP(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. INT, NUMERIC veya FLOAT8 türünde bir ifade. |
Dönüş değeri
NUMERIC veya FLOAT8.
Örnek
SELECT STDDEV_SAMP(c1) FROM example_table;
Sonuç:
stddev_samp
--------------
0.7071067812
STRING_AGG
NULL olmayan değerleri belirtilen bir ayırıcı ile tek bir dizede birleştirir.
STRING_AGG(<expression> TEXT, <delimiter> TEXT)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. Kaynak dize (TEXT). |
delimiter |
Gerekli. Ayırıcı dize (TEXT). |
Dönüş değeri
TEXT.
Örnek
SELECT STRING_AGG(c5, '-') FROM example_table;
Sonuç:
string_agg
------------
3-4
UNIQ
Hologres V1.3 ve sonraki sürümlerde desteklenir. Daha eski sürümler için bkz. Yükseltmeye hazırlanırken karşılaşılan yaygın hatalar veya Daha fazla çevrimiçi desteği nasıl alabilirsiniz? .
Bir sütun için distinct sayısını döndürür. UNIQ; sorgu bir GROUP BY yan tümcesi içerdiğinde ve GROUP BY alan değerleri veri çarpıklığı olmadan eşit dağıldığında COUNT DISTINCT'ten daha iyi performans gösterir.
UNIQ ( <column> )
Parametreler
| Parametre | Açıklama |
|---|---|
column |
Gerekli. Distinct sayısının hesaplanacağı sütun. Desteklenen türler: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, TEXT, VARCHAR, TIMESTAMP, TIMESTAMPTZ, DATE, TIMETZ ve UUID. |
Kullanım notları
UNIQ, COUNT DISTINCT'e kıyasla daha az bellek kullanır ve COUNT DISTINCT bellek yetersizliği hatalarına neden olduğunda yararlı bir alternatiftir.
UNIQ, GROUP BY anahtarının yüksek kardinaliteye sahip olduğu durumlarda COUNT DISTINCT'ten daha iyi performans gösterir.
UNIQ yalnızca sorguda bir
GROUP BYyan tümcesi olduğunda ve değerler eşit dağıldığında COUNT DISTINCT'ten daha iyi performans gösterir. GROUP BY yan tümcesi olmadan veya veri çarpıklığı durumunda performans avantajı yoktur.Hologres V2.1'den itibaren COUNT DISTINCT; tek ve çoklu COUNT DISTINCT işlevleri, veri çarpıklığı ve GROUP BY yan tümcesi içermeyen sorgular dahil olmak üzere çeşitli senaryolarda önemli ölçüde optimize edilmiştir. Çoğu durumda sorguları manuel olarak UNIQ kullanacak şekilde yeniden yazmaya gerek kalmamıştır. Ayrıntılar için bkz. Count Distinct optimizasyonu.
Örnek
Aşağıdaki örnekler, TPC-H genel veri kümesindeki ORDERS tablosunu kullanır. Tablo kurulum betiği için bkz. APPROX_COUNT_DISTINCT.
ORDERS tablosundaki O_CUSTKEY distinct sayısını hesaplayın:
SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;
Sonuç:
uniq
--------
999982
Her bir O_ORDERSTATUS için distinct O_CUSTKEY sayısını hesaplayın:
SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;
Sonuç:
o_orderstatus | uniq
---------------+--------
P | 313478
F | 996258
O | 996400
VARIANCE
Örneklem varyansını döndürür.
VARIANCE(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. INT veya NUMERIC türünde bir ifade. |
Dönüş değeri
NUMERIC.
Örnek
SELECT VARIANCE(c1) FROM example_table;
Sonuç:
variance
--------------
0.5000000000
VAR_POP
Popülasyon varyansını döndürür.
VAR_POP(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. FLOAT8, INT veya NUMERIC türünde bir ifade. |
Dönüş değeri
NUMERIC veya FLOAT8.
Örnek
SELECT VAR_POP(c1) FROM example_table;
Sonuç:
var_pop
--------------
0.2500000000
VAR_SAMP
Örneklem varyansını döndürür.
VAR_SAMP(expression)
Parametreler
| Parametre | Açıklama |
|---|---|
expression |
Gerekli. INT, FLOAT8 veya NUMERIC türünde bir ifade. |
Dönüş değeri
NUMERIC veya FLOAT8.
Örnek
SELECT VAR_SAMP(c1) FROM example_table;
Sonuç:
var_samp
--------------
0.5000000000