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