日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Hologres通用聚合函數(shù)

Hologres兼容PostgreSQL,支持使用標(biāo)準(zhǔn)的PostgreSQL語法進(jìn)行開發(fā)。

兼容PostgreSQL聚合函數(shù)

Hologres已支持的通用聚合函數(shù)列表如下。當(dāng)前Hologres版本支持的函數(shù)是PostgreSQL的一個(gè)子集,函數(shù)的使用方法請參見通用聚合函數(shù)

函數(shù)名

描述

用例

結(jié)果

array_agg(anyelement)

將表達(dá)式的值串聯(lián)到數(shù)組中。暫不支持JSON、JSONB、TIMETZ、INTERVAL、INET、OID、UUID數(shù)據(jù)類型和數(shù)組類型。

array_agg(c1)

{1,2}
{true,false}
{a,b}
{1.1,2.2}

avg(bigint)

求BIGINT類型表達(dá)式中非空值的平均值。

avg(c1)

2.000000

avg(float8)

求FLOAT8類型表達(dá)式中非空值的平均值。

avg(c1)

2

avg(float4)

求FLOAT4類型表達(dá)式中非空值的平均值。

avg(c1)

2

avg(int)

求INT類型表達(dá)式中非空值的平均值。

avg(c1)

2.000000

bit_and(bigint)

對BIGINT類型表達(dá)式中的非空值執(zhí)行按位與運(yùn)算。

bit_and(c1)

0

bit_and(int)

對INT類型表達(dá)式中的非空值執(zhí)行按位與運(yùn)算。

bit_and(c1)

0

bit_or(bigint)

對BIGINT類型表達(dá)式中的非空值執(zhí)行按位或運(yùn)算。

bit_or(c1)

3

bit_or(int)

對INT類型表達(dá)式中的非空值執(zhí)行按位或運(yùn)算。

bit_or(c1)

3

bool_and(bool)

如果BOOL表達(dá)式的值均為TRUE,則函數(shù)結(jié)果返回TRUE,否則返回FALSE。

bool_and(c1)

f

bool_or(bool)

如果BOOL表達(dá)式的值包含TRUE,則函數(shù)結(jié)果返回TRUE,否則返回FALSE。

bool_or(c1)

t

count(*)

返回指定表的行數(shù)。

count(*)

3

count(bigint)

求BIGINT類型表達(dá)式的輸入行數(shù)。

說明

BIGINT類型表達(dá)式的值不為NULL。

count(c1)

3

count(numeric)

求NUMERIC類型表達(dá)式的輸入行數(shù)。

說明

NUMERIC類型表達(dá)式的值不為NULL。

count(c1)

3

every(bool)

如果BOOL表達(dá)式的值均為TRUE,則函數(shù)結(jié)果返回TRUE,否則返回FALSE。

max(bigint)

求BIGINT類型表達(dá)式的最大值。

max(c1)

3

max(float8)

求FLOAT8類型表達(dá)式的最大值。

max(c1)

3

max(float4)

求FLOAT4類型表達(dá)式的最大值。

max(c1)

3

max(int)

求INT類型表達(dá)式的最大值。

max(c1)

3

max(numeric)

求NUMERIC類型表達(dá)式的最大值。

max(c1)

3

min(bigint)

求BIGINT類型表達(dá)式的最小值。

min(c1)

1

min(float8)

求FLOAT8類型表達(dá)式的最小值。

min(c1)

1

min(float4)

求FLOAT4類型表達(dá)式的最小值。

min(c1)

1

min(int)

求INT類型表達(dá)式的最小值。

min(c1)

1

min(numeric)

求NUMERIC類型表達(dá)式的最小值。

min(c1)

1

sum(bigint)

求BIGINT類型表達(dá)式所有值的總和。

sum(c1)

6

sum(float8)

求FLOAT8類型表達(dá)式所有值的總和。

sum(c1)

6

sum(float4)

求FLOAT4類型表達(dá)式所有值的總和。

sum(c1)

6

sum(int)

求INT類型表達(dá)式所有值的總和。

sum(c1)

6

sum(numeric)

求NUMERIC類型表達(dá)式所有值的總和。

sum(c1)

6.0

string_agg(expression, delimiter)

使用指定分隔符將指定表達(dá)式的非空值串聯(lián)成字符串。

string_agg(c1, '-')

a-b-c

corr(Y, X)

求相關(guān)系數(shù)。

corr(c1, c2)

covar_pop(Y, X)

求總體協(xié)方差。

covar_pop(c1, c2)

covar_samp(Y, X)

求樣本協(xié)方差。

covar_samp(c1, c2)

regr_avgx(Y, X)

求自變量的平均值。

reg_avgx(c1, c2)

regr_avgy(Y, X)

求因變量的平均值。

reg_avgy(c1, c2)

regr_count(Y, X)

求兩個(gè)輸入?yún)?shù)中都不為空的行數(shù)。

regr_count(c1, c2)

regr_intercept(Y, X)

求由(X,Y)確定的最小方差擬合的縱軸截距。

reg_intercept(c1, c2)

regr_r2(Y, X)

求相關(guān)系數(shù)的平方。

regr_r2(c1, c2)

regr_slope(Y, X)

求由(X,Y)確定的最小方差擬合的斜率。

regr_slope(c1, c2)

regr_sxx(Y, X)

求自變量的平方和sum(X^2) - sum(X)^2/N

regr_sxx(c1, c2)

regr_sxy(Y, X)

求自變量和因變量的乘積和sum(X*Y) - sum(X) * sum(Y)/N

regr_sxy(c1, c2)

regr_syy(Y, X)

求因變量的平方和sum(Y^2) - sum(Y)^2/N

regr_syy(c1, c2)

stddev(int)

求INT類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev(c1)

stddev(numeric)

求NUMERIC類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev(c1)

stddev(float8)

求FLOAT8類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev(c1)

stddev_pop(int)

求INT類型表達(dá)式的總體標(biāo)準(zhǔn)差。

stddev_pop(c1)

stddev_pop(numeric)

求NUMERIC類型表達(dá)式的總體標(biāo)準(zhǔn)差。

stddev_pop(c1)

stddev_pop(float8)

求FLOAT8類型表達(dá)式的總體標(biāo)準(zhǔn)差。

stddev_pop(c1)

stddev_samp(int)

求INT類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev_samp(c1)

stddev_samp(numeric)

求NUMERIC類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev_samp(c1)

stddev_samp(float8)

求FLOAT8類型表達(dá)式的樣本標(biāo)準(zhǔn)差。

stddev_samp(c1)

variance(int)

求INT類型表達(dá)式的樣本方差。

variance(c1)

variance(numeric)

求NUMERIC類型表達(dá)式的樣本方差。

variance(c1)

var_pop(float8)

求FLOAT8類型表達(dá)式的總體方差。

var_pop(c1)

var_pop(int)

求INT類型表達(dá)式的總體方差。

var_pop(c1)

var_pop(numeric)

求NUMERIC類型表達(dá)式的總體方差。

var_pop(c1)

var_samp(float8)

求FLOAT8類型表達(dá)式的樣本方差。

var_samp(c1)

var_samp(int)

求INT類型表達(dá)式的樣本方差。

var_samp(c1)

var_samp(numeric)

求NUMERIC類型表達(dá)式的樣本方差。

var_samp(c1)

其他聚合函數(shù)

APPROX_COUNT_DISTINCT

  • 語法

    APPROX_COUNT_DISTINCT函數(shù)用于計(jì)算某一列去重后的行數(shù),結(jié)果只能返回一個(gè)值,并且該值為近似值。

    APPROX_COUNT_DISTINCT ( <column> )

    參數(shù)說明如下表所示。

    參數(shù)

    描述

    column

    需要近似計(jì)算去重后行數(shù)的列。

    APPROX_COUNT_DISTINCT采用HyperLogLog基數(shù)估計(jì)的方式進(jìn)行非精確的COUNT DISTINCT計(jì)算。非精確的COUNT DISTINCT計(jì)算能提升查詢性能,尤其是對于column的離散值比較大的情況,誤差率平均可以控制在0.1%-1%以內(nèi)。該函數(shù)適用于對性能敏感并且可以接受誤差的場景。

    同時(shí),您也可以通過COUNT DISTINCT ( column )的方式進(jìn)行精確的COUNT DISTINCT計(jì)算,使用時(shí)資源開銷會(huì)比較大。

  • 調(diào)整誤差率

    通過使用以下參數(shù)調(diào)整誤差率。

    SET hg_experimental_approx_count_distinct_precision = 20;
    • 支持取值范圍為[12,20],默認(rèn)值為17。

    • 精度參數(shù)含義為HyperLogLog算法的分桶bit位個(gè)數(shù),參數(shù)越大,代表分桶越多,理論精度越高。

    • 精度參數(shù)取值越高,計(jì)算時(shí)間和內(nèi)存開銷也會(huì)相應(yīng)增大,但都遠(yuǎn)遠(yuǎn)小于精確的COUNT DISTINCT ( column )語句帶來的開銷,因此,推薦選用APPROX_COUNT_DISTINCT替換COUNT DISTINCT ( column )

    • 當(dāng)精度參數(shù)設(shè)置為17以上時(shí),Hologres采用HyperLogLog++算法,會(huì)對返回值做誤差修正,以進(jìn)一步降低誤差、穩(wěn)定誤差。例如hg_experimental_approx_count_distinct_precision取值為20時(shí),多數(shù)情況下,可以降低到0.01-0.2%不等的誤差率。

  • 示例

    計(jì)算O_CUSTKEY列去重后行數(shù)的近似值,示例語句如下。

    SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
    
    --全局設(shè)置精度20,計(jì)算O_CUSTKEY列去重后行數(shù)的近似值
    ALTER DATABASE dbname SET hg_experimental_approx_count_distinct_precision = 20;
    SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;
    
    --在Session級別設(shè)置精度20
    SET hg_experimental_approx_count_distinct_precision = 20;
    SELECT APPROX_COUNT_DISTINCT ( O_CUSTKEY ) FROM ORDERS;

UNIQ

  • 使用限制

    • 僅Hologres V1.3及以上版本支持使用UNIQ函數(shù),如果您的實(shí)例是V1.3以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

    • SQL中必須包含GROUP BY,且GROUP BY的字段比較均勻(不傾斜),UNIQ才能發(fā)揮比COUNT DISTINCT更好的性能。

  • 語法

    UNIQ函數(shù)用于計(jì)算某一列去重后的行數(shù),結(jié)果返回一個(gè)去重值。

    UNIQ ( < column > );
    • 參數(shù)說明如下。

      參數(shù)

      描述

      column

      需要計(jì)算去重后行數(shù)的列。

      支持SMALLINT、INTEGER、BIGINT、REAL、DOUBLE PRECISION、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIMETZ、UUID類型。

    • 使用說明如下。

      • 一般來說,UNIQ在GROUP BY KEY的KEY基數(shù)較高時(shí),比COUNT DISTINCT性能更好,同時(shí)UNIQ比COUNT DISTINCT更節(jié)省內(nèi)存,如果使用COUNT DISTINCT遇到內(nèi)存超限時(shí),可以換用UNIQ。

      • 從Hologres V2.1版本開始,Hologres針對COUNT DISTINCT場景做了非常多的性能優(yōu)化(包括單個(gè)COUNT DISTINCT、多個(gè)COUNT DISTINCT、數(shù)據(jù)傾斜、SQL沒有GROUP BY字段等場景),無需再手動(dòng)改寫成UNIQ實(shí)現(xiàn),即可實(shí)現(xiàn)更好的性能。詳情請參見Count Distinct優(yōu)化

  • 示例

    計(jì)算ORDERS表的O_CUSTKEY列去重后行的數(shù)值語句如下。

    SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;
    
    --不同O_ORDERSTATUS下O_CUSTKEY去重?cái)?shù)
    SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;

MAX_BY與MIN_BY

  • 使用限制

    該函數(shù)適用于Hologres V1.3.36及以上版本的實(shí)例,若實(shí)例低于該版本,請您通過加入實(shí)時(shí)數(shù)倉Hologres交流群申請升級實(shí)例,詳情請參見如何獲取更多的在線支持?

  • 語法

    MAX_BY與MIN_BY函數(shù)用于比較某一列(y列)取值的大小,當(dāng)y列取值為最大值或最小值時(shí),返回對應(yīng)著的另外一列(x列)的取值。語法如下。

    說明

    數(shù)字類型按數(shù)字大小進(jìn)行比較,非數(shù)字類型按照字典排序進(jìn)行比較。

    MAX_BY(x, y);
    MIN_BY(x, y);
    • 參數(shù)說明如下。

      參數(shù)

      描述

      y

      需要比較大小的列。

      x

      另外一列的字段名。

      • 當(dāng)y列取值為最大值時(shí),MAX_BY函數(shù)返回此列的取值結(jié)果。

      • 當(dāng)y列取值為最小值時(shí),MIN_BY函數(shù)返回此列的取值結(jié)果。

    • 使用說明如下。

      • 當(dāng)MAX_BY函數(shù)中y列的最大值存在多個(gè)時(shí),則返回對應(yīng)的多個(gè)x值中的最大值。

      • 當(dāng)MIN_BY函數(shù)中y列的最小值存在多個(gè)時(shí),則返回對應(yīng)的多個(gè)x值中的最小值。

      • y列的NULL值不參與計(jì)算。當(dāng)y列所有值均為NULL時(shí),函數(shù)返回值為NULL。

  • 示例

    • 使用MAX_BY函數(shù),通過GROUP BYid進(jìn)行分組,查詢每組cost最大值對應(yīng)的name值。示例語句如下。

      SELECT id, max_by(name, cost) FROM test GROUP BY id;
      
       id | max_by
      ----+--------
        2 | bb
        1 | aaa
        3 | c
      (3 rows)
    • 使用MAX_BY函數(shù),查詢cost最大值(存在多個(gè))對應(yīng)的name值。示例語句如下。

      select max_by(name, cost) from test;
      
       max_by
      --------
       bb
      (1 row)
    • 使用MIN_BY函數(shù),查詢cost最小值對應(yīng)的name值。示例語句如下。

      SELECT min_by(name, cost) FROM test;
      
       min_by
      --------
       cc
      (1 row)