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

聚集函數(shù)從一個(gè)輸入值的集合計(jì)算出一個(gè)單一值。 支持部分模式的聚合函數(shù)具備參與各種優(yōu)化的條件,例如并行聚合。

通用聚集函數(shù)

array_agg ( anynonarray ) → anyarray

將所有輸入值,包括空值,收集到一個(gè)數(shù)組中。

No

array_agg ( anyarray ) → anyarray

將所有輸入數(shù)組連接到一個(gè)更高維度的數(shù)組中。(輸入必須都具有相同的維度,并且不能為空的(empty)或空值(null))。

No

avg ( smallint ) → numeric

avg ( integer ) → numeric

avg ( bigint ) → numeric

avg ( numeric ) → numeric

avg ( real ) → double precision

avg ( double precision ) → double precision

avg ( interval ) → interval

計(jì)算所有非空輸入值的平均值(算術(shù)平均值)。

Yes

bit_and ( smallint ) → smallint

bit_and ( integer ) → integer

bit_and ( bigint ) → bigint

bit_and ( bit ) → bit

計(jì)算所有非空輸入值的逐位AND。

Yes

bit_or ( smallint ) → smallint

bit_or ( integer ) → integer

bit_or ( bigint ) → bigint

bit_or ( bit ) → bit

計(jì)算所有非空輸入值的逐位OR。

Yes

bool_and ( boolean ) → boolean

如果全部非空輸入值都為真則返回真,否則返回假。

Yes

bool_or ( boolean ) → boolean

如果任何非空輸入值為真則返回真,否則返回假。

Yes

count ( * ) → bigint

計(jì)算輸入行的數(shù)量。

Yes

count ( "any" ) → bigint

計(jì)算輸入值不為空的輸入行的數(shù)量。

Yes

every ( boolean ) → boolean

這是對(duì)應(yīng)bool_and的SQL標(biāo)準(zhǔn)的等效物。

Yes

json_agg ( anyelement ) → json

jsonb_agg ( anyelement ) → jsonb

收集所有輸入值,包括空值,到一個(gè)JSON數(shù)組。根據(jù)to_jsonto_jsonb將值轉(zhuǎn)換為JSON。

No

json_object_agg ( key "any", value "any" ) → json

jsonb_object_agg ( key "any", value "any" ) → jsonb

將所有鍵/值對(duì)收集到一個(gè)JSON對(duì)象中。關(guān)鍵參數(shù)強(qiáng)制轉(zhuǎn)換為文本;值參數(shù)按照to_jsonto_jsonb進(jìn)行轉(zhuǎn)換。 值可以為空,但鍵不能(為空)。

No

max ( see text ) → same as input type

計(jì)算非空輸入值的最大值。適用于任何數(shù)字、字符串、日期/時(shí)間或enum類型, 以及inet, interval, money, oid, pg_lsn,tid和任何這些類型的數(shù)組。

Yes

min ( see text ) → same as input type

計(jì)算非空輸入值的最小值。可用于任何數(shù)字、字符串、日期/時(shí)間或enum類型, 以及inet, interval,money, oid, pg_lsn,tid和任何這些類型的數(shù)組。

Yes

string_agg ( value text, delimiter text ) → text

string_agg ( value bytea, delimiter bytea ) → bytea

連接非空輸入值到字符串中。第一個(gè)值之后的每個(gè)值前面都有相應(yīng)的分隔符(delimiter)(如果它不為空)。

No

sum ( smallint ) → bigint

sum ( integer ) → bigint

sum ( bigint ) → numeric

sum ( numeric ) → numeric

sum ( real ) → real

sum ( double precision ) → double precision

sum ( interval ) → interval

sum ( money ) → money

計(jì)算非空輸入值的總和。

Yes

xmlagg ( xml ) → xml

連接非空的XML輸入值。

No

應(yīng)該注意的是,除了count之外,這些函數(shù)在沒有選擇行時(shí)返回空值。 特別地,行數(shù)的sum返回空(null),而不是預(yù)期的零,array_agg在沒有輸入行時(shí)返回空(null)而不是空數(shù)組。 coalesce函數(shù)可以在必要時(shí)用零或空數(shù)組代替空(null)。

聚合函數(shù) array_agg,json_agg, jsonb_agg,json_object_agg, jsonb_object_agg, string_agg,和 xmlagg,以及類似的用戶定義的聚合函數(shù),根據(jù)輸入值的順序產(chǎn)生富有意義的不同的結(jié)果值。 默認(rèn)情況下,這種排序是不指定的,但可以通過在聚合調(diào)用中寫入ORDER BY子句來控制。 或者,從排序的子查詢提供輸入值通常也可以。例如:

SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
注意,如果外部查詢級(jí)別包含其他處理,例如關(guān)聯(lián),則此方法可能會(huì)失敗,因?yàn)檫@可能導(dǎo)致子查詢的輸出在計(jì)算聚合之前重新排序。

### 注意

<span id="id-1.4.8.27.8.1" class="indexterm"></span><span id="id-1.4.8.27.8.2" class="indexterm"></span>

布爾聚合 `bool_and` 和 `bool_or` 對(duì)應(yīng)于標(biāo)準(zhǔn)SQL聚合 `every` 和 `any` 或 `some`. 本數(shù)據(jù)庫 支持 `every`, 但不支持 `any` 或 `some`, 因?yàn)闃?biāo)準(zhǔn)語法中存在模糊性:

```sql
    SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;

這里ANY可以被認(rèn)為是引入子查詢,或者是聚合函數(shù),如果子查詢返回一行布爾值。因此,不能為這些聚合提供標(biāo)準(zhǔn)名稱。

注意事項(xiàng)

習(xí)慣使用其他 SQL 數(shù)據(jù)庫管理系統(tǒng)的用戶可能會(huì)對(duì)count聚合應(yīng)用于整個(gè)表時(shí)的性能感到失望。一個(gè)類似下面的查詢:

    SELECT count(*) FROM sometable;

將需要與表大小成比例的工作:本數(shù)據(jù)庫將需要掃描整個(gè)表或包含表中所有行的索引。

用于統(tǒng)計(jì)的聚集函數(shù)表顯示了統(tǒng)計(jì)分析中常用的聚合函數(shù)。(這些被分離出來僅僅是為了避免使更常用的聚合列表混亂)。 顯示為接受numeric_type的函數(shù)可用于所有類型smallint, integer,bigint, numeric, real, 和 double precision。 在描述中提及N時(shí),它意味著所有輸入表達(dá)式都非空的輸入行數(shù)。在所有情況下,如果計(jì)算沒有意義,則返回 null,例如當(dāng)N為 0 時(shí)。

用于統(tǒng)計(jì)的聚集函數(shù)

corr ( Y double precision, X double precision ) → double precision

計(jì)算相關(guān)系數(shù)。

Yes

covar_pop ( Y double precision, X double precision ) → double precision

計(jì)算總體協(xié)方差。

Yes

covar_samp ( Y double precision, X double precision ) → double precision

計(jì)算樣本協(xié)方差。

Yes

regr_avgx ( Y double precision, X double precision ) → double precision

計(jì)算自變量的平均值,sum(X)/N.

Yes

regr_avgy ( Y double precision, X double precision ) → double precision

計(jì)算因變量的平均值,sum(Y)/N.

Yes

regr_count ( Y double precision, X double precision ) → bigint

計(jì)算兩個(gè)輸入都非空的行數(shù)。

Yes

regr_intercept ( Y double precision, X double precision ) → double precision

計(jì)算由(XY)對(duì)決定的最小二乘擬合的線性方程的Y-截距。

Yes

regr_r2 ( Y double precision, X double precision ) → double precision

計(jì)算相關(guān)系數(shù)的平方。

Yes

regr_slope ( Y double precision, X double precision ) → double precision

計(jì)算由(X, Y)對(duì)決定的最小二乘擬合的線性方程的斜率。

Yes

regr_sxx ( Y double precision, X double precision ) → double precision

計(jì)算自變量的“平方和” sum(X^2) - sum(X)^2/N.

Yes

regr_sxy ( Y double precision, X double precision ) → double precision

計(jì)算獨(dú)立變量乘以因變量的“sum of products”, sum(X*Y) - sum(X) * sum(Y)/N.

Yes

regr_syy ( Y double precision, X double precision ) → double precision

計(jì)算因變量的“平方和”, sum(Y^2) - sum(Y)^2/N.

Yes

stddev ( numeric_type ) → double precision for real or double precision, otherwise numeric

這是stddev_samp的一個(gè)歷史別稱。

Yes

stddev_pop ( numeric_type ) → double precision for real or double precision, otherwise numeric

計(jì)算輸入值的總體標(biāo)準(zhǔn)差。

Yes

stddev_samp ( numeric_type ) → double precision for real or double precision, otherwise numeric

計(jì)算輸入值的樣本標(biāo)準(zhǔn)差。

Yes

variance ( numeric_type ) → double precision for real or double precision, otherwise numeric

這是 var_samp 的一個(gè)歷史別稱。

Yes

var_pop ( numeric_type ) → double precision for real or double precision, otherwise numeric

計(jì)算輸入值的總體方差(總體標(biāo)準(zhǔn)差的平方)。

Yes

var_samp ( numeric_type ) → double precision for real or double precision, otherwise numeric

計(jì)算輸入值的樣本方差(樣本標(biāo)準(zhǔn)差的平方)。

Yes

有序集聚集函數(shù)表顯示了一些使用ordered-set aggregate語法的聚合函數(shù)。 這些函數(shù)有時(shí)被稱為“inverse distribution”函數(shù)。 它們的聚合輸入是通過ORDER BY引入的,它們還可以接受未聚合的direct argument,但只計(jì)算一次。 所有這些函數(shù)在其聚合的輸入中都忽略空(null)值。 對(duì)于使用fraction(fraction)參數(shù)的函數(shù),分?jǐn)?shù)值必須在 0 到 1 之間;否則將拋出一個(gè)錯(cuò)誤。但是,空分?jǐn)?shù)值簡單地產(chǎn)生一個(gè)空結(jié)果。

有序集聚集函數(shù)

mode () WITHIN GROUP ( ORDER BY anyelement ) → anyelement

計(jì)算mode,即聚合參數(shù)最頻繁的值(如果有多個(gè)相同頻繁的值,第一個(gè)可以任意選擇)。聚合參數(shù)必須是可排序類型。

No

percentile_cont ( fraction double precision ) WITHIN GROUP ( ORDER BY double precision ) → double precision

percentile_cont ( fraction double precision ) WITHIN GROUP ( ORDER BY interval ) → interval

計(jì)算continuous percentile,該值對(duì)應(yīng)于聚合參數(shù)值的有序集合中的指定分?jǐn)?shù)(fraction)。 如果需要,這將在相鄰的輸入項(xiàng)之間插入。

No

percentile_cont ( fractions double precision[] ) WITHIN GROUP ( ORDER BY double precision ) → double precision[]

percentile_cont ( fractions double precision[] ) WITHIN GROUP ( ORDER BY interval ) → interval[]

計(jì)算多個(gè)連續(xù)的百分位數(shù)。結(jié)果是一個(gè)與分?jǐn)?shù)(fractions)參數(shù)具有相同維數(shù)的數(shù)組,每個(gè)非空元素都被對(duì)應(yīng)于該百分位的(可能插值的)值所替換。

No

percentile_disc ( fraction double precision ) WITHIN GROUP ( ORDER BY anyelement ) → anyelement

計(jì)算離散百分比(discrete percentile),即聚合參數(shù)值的有序集合中的第一個(gè)值,該值在排序中的位置等于或超過指定的fraction。 聚合參數(shù)必須是可排序類型。

No

percentile_disc ( fractions double precision[] ) WITHIN GROUP ( ORDER BY anyelement ) → anyarray

計(jì)算多個(gè)離散百分位數(shù)。 結(jié)果是一個(gè)與fractions參數(shù)具有相同維數(shù)的數(shù)組,每個(gè)非空元素都被對(duì)應(yīng)于該百分位的輸入值替換。 聚合參數(shù)必須是可排序類型。

No

列在假想集聚集函數(shù)表中的每個(gè)“hypothetical-set”聚合都與同名窗口函數(shù)相關(guān)聯(lián)。 在每種情況下,聚合的結(jié)果都是相關(guān)的窗口函數(shù)將為由args構(gòu)造的“hypothetical”行返回的值,如果將這樣的行添加到sorted_args表示的已排序行組中。 對(duì)于這些函數(shù)中的每一個(gè),args中給出的直接參數(shù)列表必須與sorted_args中給出的聚合參數(shù)的數(shù)量和類型匹配。 與大多數(shù)內(nèi)置聚合不同,這些聚合不是嚴(yán)格的,也就是說它們不會(huì)刪除包含空值的輸入行。空值根據(jù)ORDER BY子句中指定的規(guī)則排序。

假想集聚集函數(shù)

rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint

計(jì)算假設(shè)行的排名,包括間隔,就是說在它的對(duì)等組中第一行的行號(hào)。

No

dense_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → bigint

計(jì)算假設(shè)行的排名,沒有間隔;這個(gè)功能有效地計(jì)數(shù)對(duì)等組。

No

percent_rank ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → double precision

計(jì)算假設(shè)行的相關(guān)排行,也就是(rank - 1))/ (total rows - 1)。取值范圍為 0 到 1(含)。

No

cume_dist ( args ) WITHIN GROUP ( ORDER BY sorted_args ) → double precision

計(jì)算累積分布,也就是(前面或具有假設(shè)行的對(duì)等行數(shù))/(總行數(shù))。取值范圍為 1/N 到 1。

No

分組操作

GROUPING ( group_by_expression(s) ) → integer

返回一個(gè)位掩碼以指示哪個(gè)GROUP BY表達(dá)式?jīng)]有包含在當(dāng)前分組集中。 比特位被分配給最右邊的參數(shù)對(duì)應(yīng)于最低有效位;如果對(duì)應(yīng)的表達(dá)式包含在生成當(dāng)前結(jié)果行的分組集的分組條件中,則每個(gè)位為0,如果不包含則為1。

GROUPING函數(shù)的參數(shù)實(shí)際上并不求值,但它們必須與相關(guān)查詢級(jí)別的GROUP BY子句中給出的表達(dá)式完全匹配。例如:

    => SELECT * FROM items_sold;
     make  | model | sales
    -------+-------+-------
     Foo   | GT    |  10
     Foo   | Tour  |  20
     Bar   | City  |  15
     Bar   | Sport |  5
    (4 rows)

    => SELECT make, model, GROUPING(make,model), sum(sales) FROM items_sold GROUP BY ROLLUP(make,model);
     make  | model | grouping | sum
    -------+-------+----------+-----
     Foo   | GT    |        0 | 10
     Foo   | Tour  |        0 | 20
     Bar   | City  |        0 | 15
     Bar   | Sport |        0 | 5
     Foo   |       |        1 | 30
     Bar   |       |        1 | 20
           |       |        3 | 50
    (7 rows)

在這里,前四行中的grouping0表明這些已經(jīng)正常分組,在兩個(gè)分組列上。 值1表示model沒有在倒數(shù)兩行中分組,值3表示無論是make還是model都沒有在最后一行中分組(因此,這是所有輸入行的聚合)。

MEDIAN

描述

該函數(shù)是一個(gè)假設(shè)連續(xù)分布模型的逆分布函數(shù)。它采用一個(gè)數(shù)字或日期時(shí)間值,并返回中間值或插值,該值在值排序后將成為中間值。在計(jì)算中忽略NULL

語法

MEDIAN(expr) [ OVER (query_partition_clause) ]

參數(shù)

參數(shù)

說明

expr

可以為任何數(shù)字?jǐn)?shù)據(jù)類型或者能夠隱式轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)類型的非數(shù)字?jǐn)?shù)據(jù)類型作為參數(shù)。

返回類型

如果只指定expr,則函數(shù)返回的數(shù)據(jù)類型與參數(shù)的數(shù)字?jǐn)?shù)據(jù)類型相同。如果指定OVER子句,則數(shù)據(jù)庫將確定具有最高數(shù)字優(yōu)先級(jí)的參數(shù),將其余參數(shù)隱式轉(zhuǎn)換為該數(shù)據(jù)類型,并返回該數(shù)據(jù)類型。

示例

create table median_test_t_1(i interval);
insert into median_test_t_1 values(interval '1 day 1 second');
insert into median_test_t_1 values(interval '2 day 1 second');
insert into median_test_t_1 values(interval '2 day 2 second');
select median(i) from median_test_t_1;
   median    
-------------
 02 00:00:01

GROUPING_ID

描述

該函數(shù)返回與一行相關(guān)聯(lián)的GROUPING位向量對(duì)應(yīng)的數(shù)字。

  • GROUPING_ID僅適用于包含GROUP BY擴(kuò)展名(如ROLLUP或CUBE)和GROUPING函數(shù)的SELECT語句。

  • 在具有許多GROUP BY表達(dá)式的查詢中,確定特定行的GROUP BY級(jí)別需要許多GROUPING函數(shù),這會(huì)導(dǎo)致繁瑣的SQL。GROUPING_ID在這些情況下很有用。

  • GROUPING_ID在功能上等效于獲取多個(gè)GROUPING函數(shù)的結(jié)果,并將它們連接到一個(gè)位向量(一個(gè)由1和0組成的字符串)中。通過使用GROUPING_ID,可以避免使用多個(gè)GROUPING函數(shù),并使行篩選條件更易于表達(dá)。使用GROUPING_ID可以更容易地進(jìn)行行篩選,因?yàn)樗璧男锌梢杂肎ROUPING_ID=n的單個(gè)條件來標(biāo)識(shí)。當(dāng)在單個(gè)表中存儲(chǔ)多個(gè)聚合級(jí)別時(shí),該函數(shù)特別有用。

語法

GROUPING_ID(expr[, expr]...)

參數(shù)

參數(shù)

說明

expr

GROUP BY子句中的一個(gè)表達(dá)式。

返回類型

返回 NUMBER數(shù)據(jù)類型。

示例

create table aggregate_functions_tb_agg(VARCHAR2_1 VARCHAR2(100),INTEGER_1 INTEGER);
insert into aggregate_functions_tb_agg(VARCHAR2_1,INTEGER_1) values('aggregate_functions_tb_agg',10);
select sum(INTEGER_1),grouping_id(VARCHAR2_1) from aggregate_functions_tb_agg group by VARCHAR2_1;
 sum | grouping 
-----+----------
  10 |        0

GROUPING

描述

該函數(shù)將超級(jí)聚合行與常規(guī)分組行區(qū)分開來。ROLLUP和CUBE等GROUP BY擴(kuò)展生成超級(jí)聚合行,其中所有值的集合由null表示。使用GROUPING函數(shù),可以將表示超級(jí)聚合行中所有值集的null與常規(guī)行中的null區(qū)分開來。

GROUPING函數(shù)中的表達(dá)式必須與GROUP BY子句中的某個(gè)表達(dá)式匹配。

語法

GROUPING(expr)

參數(shù)

參數(shù)

說明

expr

GROUP BY中的一個(gè)表達(dá)式

返回類型

返回NUMBER類型數(shù)據(jù)。

  • 如果行中expr的值是表示所有值的集合的NULL,則函數(shù)返回值1。

  • 否則,返回零。

示例

create temp view gstest1(a,b,v)
  as values (1,1,10),(1,1,11),(1,2,12),(1,2,13),(1,3,14),
            (2,3,15),
            (3,3,16),(3,4,17),
            (4,1,18),(4,1,19);

select a, b, grouping(a,b), sum(v), count(*), max(v)
  from gstest1 group by rollup (a,b);
 a | b | grouping | sum | count | max 
---+---+----------+-----+-------+-----
 1 | 1 |        0 |  21 |     2 |  11
 1 | 2 |        0 |  25 |     2 |  13
 1 | 3 |        0 |  14 |     1 |  14
 1 |   |        1 |  60 |     5 |  14
 2 | 3 |        0 |  15 |     1 |  15
 2 |   |        1 |  15 |     1 |  15
 3 | 3 |        0 |  16 |     1 |  16
 3 | 4 |        0 |  17 |     1 |  17
 3 |   |        1 |  33 |     2 |  17
 4 | 1 |        0 |  37 |     2 |  19
 4 |   |        1 |  37 |     2 |  19
   |   |        3 | 145 |    10 |  19

GRUOP_ID

描述

該函數(shù)區(qū)分由GROUP BY規(guī)范產(chǎn)生的重復(fù)組。它在從查詢結(jié)果中篩選出重復(fù)分組時(shí)非常有用。它返回一個(gè)NUMBER類型的值來唯一標(biāo)識(shí)重復(fù)的組。此函數(shù)僅適用于包含GROUP BY子句的SELECT語句。

如果某個(gè)特定分組存在n個(gè)重復(fù)項(xiàng),則GROUP_ID返回0到n-1范圍內(nèi)的數(shù)字。

語法

GROUP_ID()

返回類型

返回NUMBER類型數(shù)據(jù)。

示例

create table t(a int, b int, c int);
insert into t(a, b, c) values(1, 2, 3);
select a, b, c, grouping(a,b,c), group_id() from t group by cube(a,b,c) order by a, b, c, grouping(a, b, c), group_id();
 a | b | c | grouping | group_id 
---+---+---+----------+----------
 1 | 2 | 3 |        0 |        0
 1 | 2 |   |        1 |        0
 1 |   | 3 |        2 |        0
 1 |   |   |        3 |        0
   | 2 | 3 |        4 |        0
   | 2 |   |        5 |        0
   |   | 3 |        6 |        0
   |   |   |        7 |        0

COLLECT

描述

該函數(shù)將任何類型的列作為其參數(shù),并從所選行中創(chuàng)建輸入類型的嵌套表。要獲得該函數(shù)的結(jié)果,必須在CAST函數(shù)中使用它。

若列本身是集合,則COLLECT的輸出是集合的嵌套表。

語法

COLLECT(column)

參數(shù)

參數(shù)

說明

column

可以為任何類型的列。

返回類型

返回結(jié)果是輸入類型的嵌套表。

示例

CREATE TABLE collect_warehouses
    ( warehouse_id       NUMBER(3) 
    , warehouse_name     VARCHAR2(35)
    , location_id        NUMBER(4)
    );
CREATE TYPE collect_warehouse_name_t AS TABLE OF VARCHAR2(35);
INSERT INTO collect_warehouses VALUES (1,'Southlake, Texas',1400);
INSERT INTO collect_warehouses VALUES (2,'San Francisco',1500);
INSERT INTO collect_warehouses VALUES (3,'New Jersey',1600);
INSERT INTO collect_warehouses VALUES (4,'Seattle, Washington',1700);
SELECT CAST(COLLECT(warehouse_name) AS collect_warehouse_name_t) "Warehouses" FROM collect_warehouses;
                               Warehouses                                
-------------------------------------------------------------------------
 {"Southlake, Texas","San Francisco","New Jersey","Seattle, Washington"}