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;
这些函数以与算术函数类似的方式运算,已重载算术函数来对时间系列执行运算。请参阅二进制算术函数中这些函数的描述以获取更多信息。 例如,Plus(ts1, ts2) 与 ApplyBinaryTsOp(‘Plus', ts1, ts2) 等效。
与第一个时间系列参数具有相同类型的时间系列,这可能导致精度损失。返回类型可显式强制转型为具有更多精度的兼容的时间系列类型以避免此问题。请参阅二进制算术函数以获取更多信息。
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) 收到相同的结果。