簡體   English   中英

什么是 Postgres“全部”運算符?

[英]What is the Postgres "All" operator?

我正在閱讀在 function 調用中包含all關鍵字的查詢:

select count(all 97);
┌───────────┐
│ count(97) │
╞═══════════╡
│         1 │
└───────────┘
Elapsed: 11 ms

all (在子選擇之外)在 postgres 中做什么? 我很難在文檔中找到它。

ALL是“集合量詞”以及聚合函數的DISTINCT 它在 SQL 標准 SQL-92 的第 6.5 節中定義。

這意味着需要考慮所有的值——就像在一個多重集中——而不僅僅是不同的值——就像在一個集中 它的默認行為是沒有指定量詞。

摘自 SQL-92:

 6.5 <set function specification>... <general set function>::= <set function type> <left paren> [ <set quantifier> ] <value expression> <right paren> <set function type>::= AVG | MAX | MIN | SUM | COUNT <set quantifier>::= DISTINCT | ALL Syntax Rules 1) If <set quantifier> is not specified, then ALL is implicit. ...

似乎這只是一種表達“默認行為”的明確方式,而不是做COUNT(DISTINCT...) 從文檔:

 aggregate_name (expression [, ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] aggregate_name (ALL expression [, ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]

聚合表達式的第一種形式為每個輸入行調用一次聚合。 第二種形式與第一種形式相同,因為ALL是默認值 第三種形式為輸入行中找到的表達式的每個不同值(或多個表達式的不同值集)調用一次聚合。 第四種形式為每個輸入行調用一次聚合; 由於沒有指定特定的輸入值,它通常僅對 count(*) 聚合 function 有用。 最后一種形式用於有序集聚合函數,如下所述。

https://www.postgresql.org/docs/9.5/sql-expressions.html#SYNTAX-AGGREGATES

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM