窗口函数中ALL修饰符的意义是什么?

时间:2019-04-27 14:21:20

标签: sql postgresql

我将所有修饰符ALL的定义读为

  

ALL是可选关键字。当您将所有内容都包括在内时,   所有值,包括重复值。 DISTINCT不支持   窗口功能

我的理解是,它将自动计算所有值。

如果是这样,那为什么还要创建一个ALL关键字?

2 个答案:

答案 0 :(得分:2)

ALL在实践中几乎从未使用过。关键是要平衡语法,因此默认值具有显式关键字。

类似地,某些数据库与UNION DISTINCT相比,支持UNION(相当于UNION ALL),以明确表示UNION上还有一个附加功能-删除重复项。

答案 1 :(得分:1)

  

“如果是这种情况,那为什么还要创建一个ALL关键字?”

有一条很棒的Python规则,称为: EIBTI

显式优于隐式。


出于同样的原因,您具有类似以下的构造:

CREATE TABLE tab(
  col INT NULL   -- there is no need specify NULL because column is nullable by design
);

ALTER TABLE t ADD CONSTRAINT("t_FK") FOREIGN KEY ("c_ID")
REFERENCES "t2" ("c_ID") ENABLE;   -- constraint is enabled by default

每个“默认”行为都不需要关键字,但是如果我们可以明确声明某些内容,为什么不这样做。