窗口框架

分析函数的窗口框架由一组与函数当前正在评估的行相对的行组成。分析函数处理此行及其窗口框架之后,Vertica 会将当前行向前移动,并相应地调整框架边界。如果 OVER 子句还指定了分区,Vertica 也会检查框架边界是否跨越了分区边界。此过程将不断重复,直到函数评估了最后一个分区的最后一个行。

指定窗口框架

您可以在分析函数的 OVER 子句中指定窗口框架,如下所示。

{ ROWS | RANGE } { BETWEEN start‑point AND end‑point } | start‑point

start-point / end‑point

{ UNBOUNDED {PRECEDING | FOLLOWING}
  | CURRENT ROW
  | constant-value  {PRECEDING | FOLLOWING}}

start‑pointend‑point 指定相对于当前行的窗口框架偏移。ROWSRANGE 关键字指定偏移是物理偏移还是逻辑偏移。如果仅指定起始点,Vertica 将创建一个从此点到当前行的窗口。

有关语法的详细信息,请参阅窗口框架子句

要求

要指定窗口框架,OVER 还必须指定窗口顺序 (ORDER BY) 子句。如果 OVER 子句包含窗口顺序子句,但没有指定窗口框架,则函数会创建从当前分区的第一行扩展到当前行的默认框架。它等同于以下子句:

RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

窗口聚合函数

支持窗口框架的分析函数称为窗口聚合函数。它们返回移动平均数和累计结果等信息。要将以下函数用作窗口(分析)聚合函数,而不是基本聚合函数,OVER 子句必须指定窗口顺序子句和(可选)窗口框架子句。如果 OVER 子句没有指定窗口框架,则函数将如前所述创建默认窗口框架。

以下分析函数支持窗口框架:

包含空 OVER 子句的窗口聚合函数不会创建窗口框架。如果所有输入都视为一个分区,则函数将用作报告函数。