ApplyBinaryTsOp 函数

ApplyBinaryTsOp 函数将二进制算术函数应用到一对时间系列,或一个时间系列和一个兼容的行类型或编号。

语法

ApplyBinaryTsOp(func_name  lvarchar, 
              ts         TimeSeries, 
              ts         TimeSeries) 
returns TimeSeries;

ApplyBinaryTsOp(func_name     lvarchar, 
               number_or_row scalar|row, 
               ts           TimeSeries) 
returns TimeSeries;

ApplyBinaryTsOp(func_name     lvarchar, 
               ts           TimeSeries, 
               number_or_row scalar|row) 
returns TimeSeries;
func_name
二进制算术函数的名称。
ts
运算中要使用的时间系列。第二个和第三个参数可以是时间系列、行类型或编号。这两个参数中至少有一个必须是时间系列。
number_or_row
运算中要使用的编号或行类型。第二个和第三个参数可以是时间系列、行类型或编号。这两个参数在函数中必须兼容。请参阅二进制算术函数以获取兼容性需求的描述。

描述

这些函数以与算术函数类似的方式运算,已重载算术函数来对时间系列执行运算。请参阅二进制算术函数中这些函数的描述以获取更多信息。 例如,Plus(ts1, ts2)ApplyBinaryTsOp(‘Plus', ts1, ts2) 等效。

返回结果

与第一个时间系列参数具有相同类型的时间系列,这可能导致精度损失。返回类型可显式强制转型为具有更多精度的兼容的时间系列类型以避免此问题。请参阅二进制算术函数以获取更多信息。

示例

以下示例使用 ApplyBinaryTSOp 来实施 Plus 函数:
create row type simple_series( stock_id int, data TimeSeries(one_real));
create table daily_high of type simple_series;
insert into daily_high
   select stock_id,
      Apply( '$0.high',
         NULL::datetime year to fraction(5),
         NULL::datetime year to fraction(5),
         stock_data)::TimeSeries(one_real)
      from daily_stocks;
create table daily_low of type simple_series;
insert into daily_low
   select stock_id,
      Apply( '$0.low',
         NULL::datetime year to fraction(5),
         NULL::datetime year to fraction(5),
         stock_data)::TimeSeries(one_real)
      from daily_stocks;
create table daily_avg of type simple_series;
insert into daily_avg
   select l.stock_id, ApplyBinaryTSOp("plus", l.data, h.data)/2
      from daily_low l, daily_high h
      where l.stock_id = h.stock_id;

可以通过用 (l.data + h.data) 替换 ApplyBinaryTSOp('plus', 1.data, h.data) 收到相同的结果。