调用分析函数

您可以调用如下分析函数:

analytic‑function(arguments) OVER(
  [ window-partition-clause ]
  [ window-order-clause [ window-frame-clause ] ]
)

分析函数的 OVER 子句最多可包含三个分子句,这些分子句指定如何对函数输入进行分区和排序,以及指定就当前行而言,如何构建输入框架。函数输出是查询在评估 FROMWHEREGROUP BYHAVING 子句之后返回的结果集。

有关语法的详细信息,请参阅分析函数

函数运行

分析函数按以下方式运行:

  1. 获取查询在执行所有联接和评估 FROMWHEREGROUP BY 以及 HAVING 子句之后返回的输入行。
  2. 根据窗口分区 (PARTITION BY) 子句对输入行进行分组。如果忽略此子句,所有输入行都将视为一个分区。
  3. 根据窗口顺序 (ORDER BY) 子句对每个分区中的行进行排序。
  4. 如果 OVER 子句包含窗口顺序子句,函数会检查窗口框架子句,并在此子句处理每个输入行时运行它。如果 OVER 子句忽略窗口框架子句,函数会将整个分区视为一个窗口框架。

限制

  • 分析函数仅允许在查询的 SELECT 子句和 ORDER BY 子句中使用。

  • 分析函数不可嵌套。例如,以下查询会抛出一条错误:

    => SELECT MEDIAN(RANK() OVER(ORDER BY sal) OVER()).