[英]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.