分析函数
注意
在本节中具有聚合功能的所有分析函数与 [分析] 一起附加在标题中,以避免两个函数类型之间发生混淆。Vertica 分析是基于 ANSI 99 标准的 SQL 函数。这些函数用于处理复杂的分析和报告任务,例如:
-
对处于特殊状态的合作时间最长的客户进行排序。
-
计算指定的一段时间内零售额的移动平均值。
-
查找同一年级所有学生的最高分数。
-
对销售人员当前收到的销售奖金与其以前收到的销售奖金进行比较。
分析函数将返回聚合结果,但并不对结果集进行分组。它们会多次返回组值,每个记录一个组值。可以使用 window ORDER BY
子句排序组值或分区,但此顺序仅影响函数结果集,而不影响整个查询结果集。
语法
一般
analytic‑function(arguments) OVER(
[ window-partition-clause ]
[ window-order-clause [ window-frame-clause ] ]
)
对于指定窗口
analytic‑function(arguments) OVER(
[ named‑window [ window‑frame‑clause ] ]
)
参数
-
analytic‑function(arguments)
- Vertica 分析函数及其实参。
OVER
- 指定如何就当前行而言对窗口框架函数输入进行分区、排序。输入数据是查询在对
FROM
、WHERE
、GROUP BY
和HAVING
子句求值之后返回的结果集。空的
OVER
子句将提供单个节点中的单线程查询最佳性能。 - window‑partition‑clause
- 根据一个或多个列或表达式对输入行进行分组。
如果忽略此子句,不会进行任何分组,分析函数将所有输入行作为一个分区处理。
- window‑order‑clause
- 可以选择指定如何对提供给分析函数的行进行排序。如果
OVER
子句还包括分区子句,则在每个分区中对行进行排序。 -
window‑frame‑clause
- 仅对某些分析函数有效,指定为输入一组与分析函数当前正在评估的行相对的行。函数处理此行及其窗口之后,Vertica 会将当前行向前移动,并相应地调整窗口边界。
- named‑window
- 您在同一个查询中用窗口名称子句定义的一个窗口的名称。此定义将封装窗口分区和排序。当查询调用多个具有类似的
OVER
子句的分析函数时,命名窗口很有用。窗口名称子句不能指定窗口框架子句。然而,您可以用窗口框架子句将命名窗口限定在
OVER
子句中。
要求
以下要求适用于分析函数:
-
全部需要
OVER
子句。每个函数都有自己的OVER
子句要求。例如,您可以为一些分析聚合函数(如SUM
)提供一个空的OVER
子句。对于其他函数,可能需要窗口框架和命令子句,也可能无效。 -
只有查询的
SELECT
和ORDER BY
子句才能调用分析函数。 -
分析函数不可嵌套。例如,不允许下面的查询:
=> SELECT MEDIAN(RANK() OVER(ORDER BY sal) OVER()).
-
WHERE
、GROUP BY
和HAVING
运算符从技术上讲不是分析函数的一部分。不过,它们可以确定该函数的输入内容。
另请参阅
本节内容
- 窗口分区子句
- 窗口顺序子句
- 窗口框架子句
- 窗口名称子句
- ARGMAX [analytic]
- ARGMIN [analytic]
- AVG [analytic]
- BOOL_AND [analytic]
- BOOL_OR [analytic]
- BOOL_XOR [analytic]
- CONDITIONAL_CHANGE_EVENT [analytic]
- CONDITIONAL_TRUE_EVENT [analytic]
- COUNT [analytic]
- CUME_DIST [analytic]
- DENSE_RANK [analytic]
- EXPONENTIAL_MOVING_AVERAGE [analytic]
- FIRST_VALUE [analytic]
- LAG [analytic]
- LAST_VALUE [analytic]
- LEAD [analytic]
- MAX [analytic]
- MEDIAN [analytic]
- MIN [analytic]
- NTILE [analytic]
- NTH_VALUE [analytic]
- PERCENT_RANK [analytic]
- PERCENTILE_CONT [analytic]
- PERCENTILE_DISC [analytic]
- RANK [analytic]
- ROW_NUMBER [analytic]
- STDDEV [analytic]
- STDDEV_POP [analytic]
- STDDEV_SAMP [analytic]
- SUM [analytic]
- VAR_POP [analytic]
- VAR_SAMP [analytic]
- VARIANCE [analytic]