AggregateRange 函数

AggregateRange 函数对 startend DATETIME 参数指定的时间范围的每个元素生成聚集。

语法

AggregateRange(agg_express lvarchar, 
           ts             TimeSeries
           flags          integer default 0
           start    datetime year to fraction(5) default NULL,
           end     datetime year to fraction(5) default NULL
)
returns row;
agg_express
以逗号分隔的这些 SQL 聚集运算符的列表:MIN、MAX、MEDIAN、SUM、AVG、FIRST、LAST 或 Nth。
ts
要聚集的时间系列。
flags(可选)
请参阅 flags 自变量值

不能将 flags 参数值 1 用于此函数。

start(可选)
开始聚集的日期和时间。
end(可选)
结束聚集的日期和时间。

描述

AggegateRange 函数将时间系列的输入部分转换为一行聚集值。agg_express 表达式对指定为 $colname$colnumber 的输入时间系列的列执行运算:例如,$high$1

如果 MIN、MAX、MEDIAN、SUM 或 AVG 表达式用于非数字列,那么将出现错误。

使用以下语法,Nth 表达式将返回指定聚集时间段的列的值:

Nth($col, n)

$col
TimeSeries 行中列的名称或编号。
n
指示聚集时间段中 TimeSeries 行位置的正数或负数。正值 n 从聚集时间段中的第一行开始;因此,Nth($col, 1) 与 FIRST($col) 等效。负值 n 从聚集时间段中的最后一行开始;因此,Nth($col, -1) 与 LAST($col) 等效。

如果聚集时间段的第 n 行没有值,那么 Nth 函数将针对该时间段返回空值。使用 n 参数的正值执行 Nth 函数比使用负值效率更高。

聚集时间段由时间段的开始日期和时间表示。

flags 自变量值

flags 参数确定在聚集期间如何处理日历休息时间段中的数据点,以及如何管理隐藏的元素。该参数可以具有以下值。

0(缺省值)
休息时间段中的数据聚集到下一个输出时间段。
2
指示扫描应该使用 TS_SCAN_HIDDEN 标志集运行(返回隐藏的元素)。
4
指示扫描应该使用 TS_SCAN_SKIP_HIDDEN 标志集运行(不返回隐藏的元素)。

返回结果

单个元素(行)。

示例

以下示例生成称为 stock_data 的时间系列的列 high 中的平均值。首先,示例创建行类型 elemval 作为结果的强制转型。
create row type elemval (tstamp datetime year to fraction(5),
                         high double precision);


select 
  AggregateRange('avg($high)', stock_data)::elemval
from daily_stocks;