创建用户定义聚集的示例

以下示例定义了名为 average 的用户定义聚集:
CREATE AGGREGATE average
      WITH (
      INIT = average_init,
      ITER = average_iter,
      COMBINE = average_combine,
      FINAL = average_final
      );

在查询中使用 average 聚集之前,必须使用 CREATE FUNCTION 语句来创建 CREATE AGGREGATE 语句中指定的支持函数。

下表给出了每个支持函数可能为 average 执行的任务的示例。

关键字 支持函数 作用
INIT average_init 分配并初始化存储当前总和和当前行计数的扩展数据类型
ITER average_iter 对于每行,将表达式的值添加到当前总和并将当前行计数加一
COMBINE average_combine 将部分结果的当前总和和当前行计数添加到其它结果,并返回更新的结果
FINAL average_final 返回当前总和与当前行计数的比率,并将此比率转换到结果类型