调用分析函数
您可以调用如下分析函数:
analytic‑function(arguments) OVER(
[ window-partition-clause ]
[ window-order-clause [ window-frame-clause ] ]
)
分析函数的 OVER
子句最多可包含三个分子句,这些分子句指定如何对函数输入进行分区和排序,以及指定就当前行而言,如何构建输入框架。函数输出是查询在评估 FROM
、WHERE
、GROUP BY
和 HAVING
子句之后返回的结果集。
注意
每个函数都有自己的OVER
子句要求。例如,有些分析函数不支持窗口顺序子句和窗口框架子句。
有关语法的详细信息,请参阅分析函数。
函数运行
分析函数按以下方式运行:
- 获取查询在执行所有联接和评估
FROM
、WHERE
、GROUP BY
以及HAVING
子句之后返回的输入行。 - 根据窗口分区 (
PARTITION BY
) 子句对输入行进行分组。如果忽略此子句,所有输入行都将视为一个分区。 - 根据窗口顺序 (
ORDER BY
) 子句对每个分区中的行进行排序。 - 如果
OVER
子句包含窗口顺序子句,函数会检查窗口框架子句,并在此子句处理每个输入行时运行它。如果OVER
子句忽略窗口框架子句,函数会将整个分区视为一个窗口框架。
限制
-
分析函数仅允许在查询的
SELECT
子句和ORDER BY
子句中使用。 -
分析函数不可嵌套。例如,以下查询会抛出一条错误:
=> SELECT MEDIAN(RANK() OVER(ORDER BY sal) OVER()).