序列操作函数
概述
以下序列操作函数接受各种输入序列或标量参数,并生成如表中所述的结果序列或标量类型:
函数 | 说明 |
---|---|
seq_repeat( n_times ) | 返回对象序列中每个元素重复 n_times 次后的序列 |
seq_reverse( input ) | 返回 input 序列的逆序 |
seq_concat( input1, input2 ) | 返回 input1 序列与 input2 序列的连接结果 |
seq_subseq( input, from, till ) | 返回 input 序列中从 from 到 till 的子序列 |
seq_diff( input ) | 返回由 input 序列中相邻元素差值组成的序列 |
seq_unique( input ) | 返回 input 序列中按顺序排列的唯一元素,即“合并重复项” |
seq_norm( input ) | 返回 input 序列的归一化值;即每个序列元素除以所有元素平方和的平方根 |
seq_trend( input ) | 通过比较相邻元素对返回趋势 |
seq_ceil( input ) | 返回比 input 元素值(类型为 double)大的最接近整数的序列 |
seq_stretch() | 返回与参数 1 长度相同的序列,其中包含来自序列 val 的值 |
seq_stretch0() | 返回与参数 1 长度相同的序列,其中包含来自序列 val 的值。插入与参数 2 相关的缺失元素,以使 ts1 和 ts2 的对应时间戳相匹配 |
seq_asof_join() | 返回与 ts2 时间戳最接近 ts1 时间戳的值序列。例如,假设 ts1 = {4,9} ,ts2 = {1,3,6,10} ,values = {0.1,0.3,0.6,1.0} 。对于这些输入序列,结果将是 {0.3,1.0} |
seq_cross( 输入, cross_direction ) | 返回序列中穿过零的位置。如果整数参数 cross_direction 为正,则结果序列从第一个高于零的交叉点开始;如果为负,则从低于零的交叉点开始;如果 cross_direction 为零,则无关紧要,即第一个交叉点可以在零的上方或下方。 |
seq_extrema( input, first_extremum ) | 返回 input 序列中极值(局部最小值和最大值)的位置。如果整数参数 first_extremum 为正,则结果序列从第一个局部最大值开始;如果为负,则从局部最小值开始;如果 first_extremum 为零,则顺序无关紧要。 |
重复函数
seq_repeat()
函数返回一个结果序列,其中包含输入序列中重复的值。请注意,第二个参数是一个正整数,用于指定在序列参数中指定的值重复的次数。 以下是一个演示 seq_repeat()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(4,'{42}','{17}');
SELECT iVal1,seq_repeat(iVal1,3) AS "repeat" FROM SimpleSequence WHERE testNumber=4;
iVal1{}
repeat{}
--------------------
{42, 17}
{42, 42, 42, 17, 17, 17}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
反转函数
seq_reverse()
函数返回一个结果序列,其中包含输入序列元素的逆序。 以下是一个展示 seq_reverse() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(1,'{-3,-2,-1,0,1,2,3}');
SELECT iVal1, seq_reverse(iVal1) AS "reverse" FROM SimpleSequence WHERE testNumber = 1;
iVal1{}
reverse{}
--------------------------------------------------------
{-3, -2, -1, 0, 1, 2, 3}
{3, 2, 1, 0, -1, -2, -3}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
连接函数
seq_concat()
函数返回一个序列,其中包含序列 1 的元素,然后是序列 2 的元素。 以下是一个演示 seq_concat()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1,iVal2)
VALUES(2,'{1}','{2,3}');
SELECT iVal1,iVal2,seq_concat(iVal1,iVal2) AS "concat" FROM SimpleSequence
WHERE testNumber=2;
iVal1
iVal2
concat
--------------------------
{1}
{2, 3}
{1, 2, 3}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
子序列函数
seq_subseq()
函数用于通过指定整数位置参数“from”和“to”来提取输入序列的某一段。 以下是一个展示 seq_subseq() 函数的示例脚本:
SELECT symbol, seq_subseq(seq_search(day, 20130101, 20131231),1,4) as "2013_1-4"
FROM Quote WHERE symbol='SYM0';
symbol
2013_1-4{}
-------------------------------------------------
SYM0
{20130104, 20130106, 20130110, 20130123}
上述示例返回包含输入序列中第 1 项至第 4 项元素的序列,该输入序列包含 2013 年的日期值。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
g 11
差异函数
seq_diff()
函数返回一个值序列,这些值代表第 n 个元素减去第 n - 1 个元素的结果。 以下是一个演示 seq_diff()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(2,'{4,9,2,9,1,4,9,7,5,3}');
SELECT iVal1, seq_diff(iVal1) AS "diff" FROM SimpleSequence WHERE testNumber = 2;
iVal1{}
diff{}
----------------------------------------------------------------------
{4, 9, 2, 9, 1, 4, 9, 7, 5, 3}
{0, 5, -7, 7, -8, 3, 5, -2, -2, -2}
结果序列中的元素按如下方式获取:
n | n-1 | result |
---|---|---|
4 | - | 0 |
9 | 4 | 9 - 4 = 5 |
2 | 9 | 2 - 9 = -7 |
9 | 2 | 9 - 2 = 7 |
1 | 9 | 1 - 9 = -8 |
4 | 1 | 4 - 1 = 3 |
9 | 4 | 9 - 4 = 5 |
7 | 9 | 7 - 9 = -2 |
5 | 7 | 5 - 7 = -2 |
3 | 5 | 3 - 5 = -2 |
(请注意,返回序列中的第一个元素只是占位符值 0,因为没有 n - 1 个值与之进行比较。)
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
唯一函数
seq_unique()
函数会从结果序列中移除重复的值,但某个值可能会出现多次。例如,请注意上述结果集中值 4 在序列开头出现了一次,这是由于输入序列中有重复值,然后在倒数第二个元素处又出现了一次,这是由于输入序列中存在单个值 4。 以下是一个演示 seq_unique()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(3,'{4,4,7,7,7,5,4,3}');
SELECT iVal1, seq_unique(iVal1) AS "unique" FROM SimpleSequence WHERE testNumber = 3;
iVal1{}
unique{}
----------------------------------------------------------------------
{4, 4, 7, 7, 7, 5, 4, 3}
{4, 7, 5, 4, 3}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
范式函数
seq_unique()
函数会从结果序列中移除重复的值,但某个值可能会出现多次。例如,请注意上述结果集中值 4 在序列开头出现了一次,这是由于输入序列中有重复值,然后在倒数第二个元素处又出现了一次,这是由于输入序列中存在单个值 4。 以下是一个演示 seq_unique()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,dVal1)
VALUES(5,'{2.9,3.14,4.6}');
SELECT dVal1, seq_norm(dVal1) AS "norm" FROM SimpleSequence WHERE testNumber = 5;
dVal1{}
norm{}
--------------------------------------------------------------
{2.900000, 3.140000, 4.600000}
{0.461835, 0.500056, 0.732566}
因此,此数据集的结果值是通过以下方式获得的:
将元素值平方:
value square 2.90 8.41 3.14 9.86 4.60 21.16 平方值之和 = 39.4296
39.4296 的平方根等于 6.27929
将每个元素除以 6.279299,我们得到以下结果:
value / 6.279299 = norm
value norm 2.90 0.461835 3.14 0.500056 4.60 0.732566
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
趋势函数
seq_trend()
函数通过比较元素值对来确定值是呈上升趋势还是下降趋势。对于值序列 V:如果 Vn-1 < Vn,则结果序列的第 n 个元素将为 1,表示正向趋势;如果 Vn-1 > Vn,则结果序列的第 n 个元素将为 -1,表示下降趋势;如果 Vn-1 = Vn,则将 Vn 与 Vn-2、Vn-3 等进行比较,直到找到不等式,结果序列的第 n 个元素将相应地为 1 或 -1。请注意,结果序列中的第一个元素只是占位符值 0,因为没有 Vn-1 可以与之比较。
以下是一个展示 seq_trend() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(6,'{1,2,3,3,2,2,4,5,6,5}');
SELECT iVal1, seq_trend(iVal1) AS "trend" FROM SimpleSequence WHERE testNumber = 6;
iVal1{}
trend{}
------------------------------------------------------------------------------
{1, 2, 3, 3, 2, 2, 4, 5, 6, 5}
{0, 1, 1, 1, -1, -1, 1, 1, 1, -1}
数据集的结果值如下:
- 元素 0 为 0,因无前一个元素可比较。
- 元素 1 为 1,因 2 > 1,表示正向趋势。
- 元素 2 为 1,因 3 > 2,表示正向趋势。
- 元素 3 为 1,因 3 = 3,继续与前两个元素比较,3 > 2,表示正向趋势。
- 元素 4 为 -1,因 2 < 3,表示负向趋势。
- 元素 5 为 -1,因 2 = 2,继续与前两个元素比较,2 < 3,表示负向趋势。
- 元素 6 为 1,因 4 > 2,表示正向趋势。
- 元素 7 为 1,因 5 > 4,表示正向趋势。
- 元素 8 为 1,因 6 > 5,表示正向趋势。
- 元素 9 为 -1,因 5 < 6,表示负向趋势。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
Ceiling(上取整)和 Floor(下取整)函数
seq_ceil()
和 seq_floor()
函数接受类型为 double
的序列参数,并返回一个类型为 double
的序列,其中包含输入元素值下方或上方最接近的整数值。 以下是一个示例脚本,演示了 seq_ceil() 和 seq_floor() 函数:
INSERT INTO SimpleSequence(testNumber,dVal1)
VALUES(4,'{2.9,3.14,4.6}');
SELECT dVal1, seq_ceil(dVal1) AS "ceil" FROM SimpleSequence WHERE testNumber = 4;
SELECT dVal1, seq_floor(dVal1) AS "floor" FROM SimpleSequence WHERE testNumber = 4;
dVal1{}
ceil{}
---------------------------------------------------------------
{2.900000, 3.140000, 4.600000}
{3.000000, 4.000000, 5.000000}
dVal1{}
floor{}
---------------------------------------------------------------
{2.900000, 3.140000, 4.600000}
{2.000000, 3.000000, 4.000000}
因此,此数据集的结果值是通过以下方式获得的:
value | ceil | floor |
---|---|---|
2.90 | 3.00 | 2.00 |
3.14 | 4.00 | 3.00 |
4.60 | 5.00 | 4.00 |
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 2
拉伸函数
seq_stretch()
函数常用于计算“拆分”调整后的价格。seq_stretch()
会根据两个输入时间序列 ts1
和 ts2
的值进行比较,将第三个序列 dVal3
中的元素复制到结果序列中,从而“拉伸”该序列。当 ts2
中的值大于 ts1
中的值时,它会重复 dVal3
中的元素,直到结果序列中的元素数量与 ts1
相同。 以下是一个演示 seq_stretch()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(5,'{1,2,3,4,5}','{2,4}','{1.1,2.2}');
SELECT ts1,ts2,dVal3,seq_stretch(ts1,ts2,dVal3) AS "stretch" FROM SimpleSequence WHERE testNumber=5;
ts1{}
ts2{}
dVal3{}
stretch{}
------------------------------------------------------------------------------
{1, 2, 3, 4, 5}
{2, 4}
{1.100000, 2.200000}
{1.100000, 2.200000, 2.200000, 1.000000, 1.000000}
在上述示例中,结果序列的生成方式如下:
- ts2 的第一个元素大于 ts1 的对应元素(2 > 1),因此将 dVal3 的第一个元素(1.1)复制到结果序列。
- ts1 的第二个元素等于 ts2 的第一个元素(2 = 2)。比较 ts2 的下一个元素,发现 ts2 的值大于 ts1(4 > 2),因此将 dVal3 的第二个元素(2.2)复制到结果序列。
- ts2 的第二个元素大于 ts1 的第三个元素(4 > 3),因此重复 dVal3 的第二个元素(2.2)到结果序列。
- ts2 的第二个元素等于 ts1 的第四个元素(4 = 4),但 ts2 没有更多元素可比较,因此将填充值(1.0)复制到结果序列。
- ts2 已无更多元素与 ts1 剩余元素比较,继续使用填充值(1.0)。
seq_stretch0()
函数是 seq_stretch()
的替代方案,用于通过为“缺失元素”注入 0 来“拉伸”序列。seq_stretch0()
会将第三个参数 dVal3
中的元素复制到 ts1
中同时存在于 ts2
中的值,或者存在于 ts2
中但缺失于 ts1
中的值。结果序列的元素数量为 ts1
的元素数量加上 ts2
中缺失于 ts1
的元素数量。
以下是一个展示 seq_stretch0() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(6,'{1,2,3,5}','{2,3,4}','{1.1,1.2,1.3}');
SELECT ts1,ts2,dVal3,seq_stretch0(ts1,ts2,dVal3) AS "stretch0"
FROM SimpleSequence WHERE testNumber=6;
ts1{}
ts2{}
dVal3{}
stretch0{}
----------------------------------------------------------------------------------
{1, 2, 3, 5}
{2, 3, 4}
{1.100000, 1.200000, 1.300000}
{0.000000, 1.100000, 1.200000, 1.300000, 0.000000}
在上述示例中,结果序列的生成方式如下:
- ts1 的第一个元素(1)不在 ts2 中,因此将填充值(0.0)复制到结果序列。
- ts1 的第二个元素(2)存在于 ts2 中,因此将 dVal3 的第一个元素(1.1)复制到结果序列。
- ts2 的下一个元素(3)与 ts1 的下一个元素匹配,因此将 dVal3 的下一个元素(1.2)复制到结果序列。
- ts2 的下一个元素(4)不在 ts1 中,因此将 dVal3 的下一个值(1.3)复制到结果序列。
- ts1 的下一个元素(5)不在 ts2 中,因此将填充值(0.0)复制到结果序列。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
Asof_Join 函数
seq_asof_join()
函数会复制与指定值“接近”的序列元素,这些指定值代表“截至”时间戳。因此,第三个参数 dVal3
中的元素会被复制到结果序列中,这些元素与 ts2
中的值相对应,且这些值是与 ts1
中的值最接近(但仍小于或等于)的值。所以,参数 ts1
表示感兴趣的时戳,ts2
包含与 dVal3
中的数据值相对应的可用时戳。dVal3
中的元素数量必须与 ts2
中的相同,结果序列中的元素数量将等于 ts1
中的时戳数量。
以下是一个展示 seq_asof_join() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(7,'{4,9}','{1,3,6,10}','{0.1,0.3,0.6,1.0}');
SELECT ts1,ts2,dVal3,seq_asof_join(ts1,ts2,dVal3) AS "asof_join" FROM SimpleSequence WHERE testNumber=7;
ts1{}
ts2{}
dVal3{}
asof_join{}
------------------------------------------------------------------------------
{4, 9}
{1, 3, 6, 10}
{0.100000, 0.300000, 0.600000, 1.000000}
{0.300000, 1.000000}
在上述示例中,结果序列的生成方式如下:
- ts1 的第一个元素(4)最接近 ts2 的第一个元素(3),因此将 dVal3 的第一个元素(0.3)复制到结果序列。
- ts1 的第二个元素(9)最接近 ts2 的第三个元素(10),因此将 dVal3 的第三个元素(1.0)复制到结果序列。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
交叉函数
seq_cross()
函数返回一个值序列,指示输入序列在何处穿过零点。第二个参数指定是指示序列向上穿过零点的位置还是向下穿过零点的位置:负值表示希望得到向下穿过零点的位置;正值表示希望得到向上穿过零点的位置;值为 0 则表示希望得到任何方向穿过零点的位置。
以下是一个展示 seq_cross() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1,iVal2)
VALUES(8,'{-1,0,1,-3,2}');
SELECT iVal1,seq_cross(iVal1,-1) AS "cross-neg",seq_cross(iVal1,1) AS "cross-pos",seq_cross(iVal1,0) AS "cross-0"
FROM SimpleSequence WHERE testNumber=8;
iVal1{}
cross-neg{}
cross-pos{}
cross-0{}
--------------------------------------------------
{-1, 0, 1, -3, 2}
{3}
{1, 4}
{1, 3, 4}
在上述示例中,结果序列的生成方式如下:
- cross-neg{}:iVal1 的第 3 个元素(-3)在负方向上穿过零,因此位置 3 被复制到结果序列。
- cross-pos{}:iVal1 的第 1 个元素(0)是正方向上的第一个零交叉点,因此位置 1 被复制到结果序列。iVal1 的第 4 个元素(2)是正方向上的下一个零交叉点,因此位置 4 被复制到结果序列。
- cross-0{}:当 seq_cross() 的第二个参数为 0 时,结果序列包含所有零交叉点的位置。因此,正方向上的交叉点(位置 1 和 4)和负方向上的交叉点(位置 3)按升序(1、3、4)复制到结果序列。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
极值函数
seq_extrema()
函数返回一个序列,其中包含输入序列中极值(即“局部”最大值和最小值)的位置。第二个参数指定所需的极值类型:负值表示需要局部最小值;正值表示需要局部最大值;值为 0 表示需要同时获取局部最小值和最大值。
以下是一个展示 seq_extrema() 函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(9,'{-3,-2,0,3,2}');
SELECT iVal1,seq_extrema(iVal1,-1) AS "extrema-neg",
seq_extrema(iVal1,1) AS "extrema-pos",
seq_extrema(iVal1,0) AS "extrema-0"
FROM SimpleSequence WHERE testNumber=9;
iVal1{}
extrema-neg{}
extrema-pos{}
extrema-0{}
--------------------------------------------------
{-3, -2, 0, 3, 2}
{}
{3}
{3}
请注意,极值点被定义为函数导数为 0 的点。但由于导数的计算需要两侧相邻的点,所以序列中的第一个和最后一个元素不可能是极值点。
在上述示例中,结果序列的生成方式如下:
- extrema-neg{}:尽管 iVal1 的第一个元素(-3)是绝对最小值,但因其左侧没有相邻元素,不符合局部最小值的条件。因此,结果序列为空。
- extrema-pos{}:iVal1 的第 2、3 和 4 个元素(0、3、2)在位置 3 处形成局部最大值。因此,位置 3 被复制到结果序列。
- extrema-0{}:除了位置 3 处的局部最大值外,序列中没有其他极值。因此,仅位置 3 被复制到结果序列。
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
f 5
示例
以下是一个示例代码片段,展示了序列操作方法:
-- seq_repeat, seq_reverse
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(4,'{42,17}');
SELECT iVal1,seq_repeat(iVal1,3) AS "repeat" FROM SimpleSequence
WHERE testNumber=4;
SELECT iVal1,seq_reverse(iVal1) AS "reverse" FROM SimpleSequence
WHERE testNumber=4;
iVal1{}
repeat{}
-------------------------------------------------------------------------
{42, 17}
{42, 42, 42, 17, 17, 17}
iVal1{}
reverse{}
-------------------------------------------------------------------------
{42, 17}
{17, 42}
-- seq_concat, seq_subseq
INSERT INTO SimpleSequence(testNumber,iVal1,iVal2)
VALUES(1,'{42,-13,27,19}','{2,3}');
SELECT iVal1,iVal2,seq_concat(iVal1,iVal2) AS "concat" FROM SimpleSequence
WHERE testNumber=1;
SELECT iVal1, seq_subseq(iVal1,1,2) AS "subseq" FROM SimpleSequence
WHERE testNumber = 1;
iVal1{}
iVal2{}
concat{}
-------------------------------------------------------------------------
{42, -13, 27, 19}
{2, 3}
{42, -13, 27, 19, 2, 3}
iVal1{}
subseq{}
-------------------------------------------------------------------------
{42, -13, 27, 19}
{-13, 27}
-- seq_diff, seq_unique
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(2,[4,9,2,9,1,4,9,7,5,3]);
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(3,[4,4,7,7,7,5,4,3]);
SELECT iVal1, seq_diff(iVal1) AS "diff" FROM SimpleSequence
WHERE testNumber = 2;
SELECT iVal1, seq_unique(iVal1) AS "unique" FROM SimpleSequence
WHERE testNumber = 3;
iVal1{}
diff{}
-------------------------------------------------------------------------
{4, 9, 2, 9, 1, 4, 9, 7, 5, 3}
{0, 5, -7, 7, -8, 3, 5, -2, -2, -2}
iVal1{}
unique{}
-------------------------------------------------------------------------
{4, 4, 7, 7, 7, 5, 4, 3}
{4, 7, 5, 4, 3}
-- seq_norm, seq_trend
INSERT INTO SimpleSequence(testNumber,dVal1)
VALUES(5,[1,2,3]);
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(6,[1,2,3,3,2,2,4,5,6,5]);
SELECT dVal1, seq_norm(dVal1) AS "norm" FROM SimpleSequence
WHERE testNumber = 5;
SELECT iVal1, seq_trend(iVal1) AS "trend" FROM SimpleSequence
WHERE testNumber = 6;
dVal1{}
norm{}
-------------------------------------------------------------------------
{1, 2, 3}
{0.267261241912424, 0.534522483824849, 0.801783725737273}
iVal1{}
trend{}
-------------------------------------------------------------------------
{1, 2, 3, 3, 2, 2, 4, 5, 6, 5}
{0, 1, 1, 1, -1, -1, 1, 1, 1, -1}
-- seq_ceil, seq_floor
INSERT INTO SimpleSequence(testNumber,dVal1)
VALUES(4,[2.9,3.14,4.6]);
SELECT dVal1, seq_ceil(dVal1) AS "ceil" FROM SimpleSequence
WHERE testNumber = 4;
SELECT dVal1, seq_floor(dVal1) AS "floor" FROM SimpleSequence
WHERE testNumber = 4;
dVal1{}
ceil{}
-------------------------------------------------------------------------
{2.9, 3.14, 4.6}
{3, 4, 5}
dVal1{}
floor{}
-------------------------------------------------------------------------
{2.9, 3.14, 4.6}
{2, 3, 4}
-- seq_stretch, seq_stretch0
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(5,'{1,2,3,4,5}','{2,4}','{1.1,2.2}');
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(6,'{1,2,3,5}','{2,3,4}','{1.1,1.2,1.3}');
SELECT ts1,ts2,dVal3,seq_stretch(ts1,ts2,dVal3) AS "stretch" FROM SimpleSequence
WHERE testNumber=5;
SELECT ts1,ts2,dVal3,seq_stretch0(ts1,ts2,dVal3) AS "stretch0" FROM SimpleSequence
WHERE testNumber=6;
ts1{}
ts2{}
dVal3{}
stretch{}
-------------------------------------------------------------------------
{1, 2, 3, 4, 5}
{2, 4}
{1.1, 2.2}
{1.1, 2.2, 2.2, 1, 1}
ts1{}
ts2{}
dVal3{}
stretch0{}
-------------------------------------------------------------------------
{1, 2, 3, 5}
{2, 3, 4}
{1.1, 1.2, 1.3}
{0, 1.1, 1.2, 1.3, 0}
-- _asof_join
INSERT INTO SimpleSequence(testNumber,ts1,ts2,dVal3)
VALUES(7,'{4,9}','{1,3,6,10}','{0.1,0.3,0.6,1.0}');
SELECT ts1,ts2,dVal3,seq_asof_join(ts1,ts2,dVal3) AS "asof_join" FROM SimpleSequence
WHERE testNumber=7;
ts1{}
ts2()
dVal3{}
asof_join{}
-------------------------------------------------------------------------
{4, 9}
{1, 3, 6, 10}
{0.1, 0.3, 0.6, 1}
{0.3, 1}
-- _cross
INSERT INTO SimpleSequence(testNumber,iVal1)
VALUES(8,'{-1,0,1,-3,2}');
SELECT iVal1,seq_cross(iVal1,-1) AS "cross-neg", seq_cross(iVal1,1) AS "cross-pos",
seq_cross(iVal1,0) AS "cross-0" FROM SimpleSequence
WHERE testNumber=8;
iVal1{}
cross-neg{}
cross-pos{}
cross-0{}
-------------------------------------------------------------------------
{-1, 0, 1, -3, 2}
{3}
{1, 4}
{1, 3, 4}