二元运算函数
概述
以下二元函数接受两个输入序列,即左序列和右序列,并生成相同类型的输出序列。 这两个输入序列必须是相同的类型。如果两个输入序列的长度不同,则操作仅在较短序列的元素数量范围内执行。
函数 | 说明 |
---|---|
seq_add( left, right ) | 结果序列中的元素是 left 和 right 中对应元素的和 |
seq_sub( left, right ) | 结果序列中的元素是 left 中对应元素减去 right 中对应元素的差 |
seq_mul( left, right ) | 结果序列中的元素是 left 中对应元素与 right 中对应元素的乘积 |
seq_div( left, right ) | 结果序列中的元素是 left 中对应元素除以 right 中对应元素的商 |
seq_mod( left, right ) | 结果序列中的元素是 left 中对应元素除以 right 中对应元素的余数 |
seq_pow( left, right ) | left 中的元素分别以 right 中对应元素为指数进行幂运算 |
seq_maxof( left, right ) | 返回由 left 和 right 中对应元素对中较大者组成的序列 |
seq_minof( left, right ) | 返回由 left 和 right 中对应元素对中较小者组成的序列 |
加、减、乘、除函数
seq_add()
函数将序列 1 中的元素与序列 2 中的对应元素相加;seq_sub()
函数用序列 1 中的对应元素减去序列 2 中的元素;seq_mul()
函数将两个序列中的对应元素相乘;seq_div()
函数用序列 1 中的元素除以序列 2 中的对应元素。 以下是一个示例脚本,演示了 seq_add()
、seq_sub()
、seq_mul()
和 seq_div()
函数的用法:
INSERT INTO SimpleSequence(testNumber,dVal1,dVal2)
VALUES(1,'{1,2}','{3,4}');
SELECT dVal1,dVal2,seq_add(dVal1,dVal2) As "add" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_sub(dVal1,dVal2) As "sub" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_mul(dVal1,dVal2) As "mul" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_div(dVal1,dVal2) As "div" FROM SimpleSequence where testNumber=1;
dVal1{}
dVal2{}
add{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{4.000000, 6.000000}
dVal1{}
dVal2{}
sub{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{-2.000000, -2.00000}
dVal1{}
dVal2{}
mul{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{3.000000, 8.000000}
dVal1{}
dVal2{}
div{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{0.333333, 0.500000}
序列取模函数
seq_mod()
函数计算序列 1 中的元素除以序列 2 中对应元素后的余数(即除法的余数)。 以下是一个演示 seq_mod()
函数的示例脚本:
INSERT INTO SimpleSequence(testNumber,dVal1,dVal2)
VALUES(2,'{6,7}','{3,4}');
SELECT dVal1,dVal2,seq_mod(dVal1,dVal2) As "mod" FROM SimpleSequence where testNumber=2;
dVal1{}
dVal2{}
mod{}
--------------------------------------------------------------------
{6.000000, 7.000000}
{3.000000, 4.000000}
{0.000000, 3.000000}
因此,对于上述数据集,结果如下所示:
6.0 / 3.0 = 2.0 余数 0.0
7.0 / 4.0 = 1.0 余数 3.0
序列较大和较小函数
seq_maxof()
和 seq_minof()
函数是二元函数,它们接受两个序列作为参数,并且对于输入序列中每一对对应的元素,分别返回每对中较大或较小元素组成的序列。例如:
XSQL>create table t(s sequence(int), q sequence(int));
XSQL>insert into t(s,q) values([1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1]);
XSQL>select * from t;
s q
--------------------------------------------------------------------
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
Selected records: 1
XSQL>select seq_maxof(s,q), seq_minof(s,q) from t;
#1 #2
--------------------------------------------------------------------
{10, 9, 8, 7, 6, 6, 7, 8, 9, 10} {1, 2, 3, 4, 5, 5, 4, 3, 2, 1}
Selected records: 1
示例
以下是一个示例代码片段,演示了二进制函数:
-- seq_add, seq_sub, seq_mul, seq_div
INSERT INTO SimpleSequence(testNumber,dVal1,dVal2)
VALUES(1,'{1,2}','{3,4}');
SELECT dVal1,dVal2,seq_add(dVal1,dVal2) As "add" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_sub(dVal1,dVal2) As "sub" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_mul(dVal1,dVal2) As "mul" FROM SimpleSequence where testNumber=1;
SELECT dVal1,dVal2,seq_div(dVal1,dVal2) As "div" FROM SimpleSequence where testNumber=1;
dVal1{}
dVal2{}
add{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{4.000000, 6.000000}
dVal1{}
dVal2{}
sub{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{-2.000000, -2.00000}
dVal1{}
dVal2{}
mul{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{3.000000, 8.000000}
dVal1{}
dVal2{}
div{}
--------------------------------------------------------------------
{1.000000, 2.000000}
{3.000000, 4.000000}
{0.333333, 0.500000}
-- seq_mod
INSERT INTO SimpleSequence(testNumber,dVal1,dVal2)
VALUES(2,'{6,7}','{3,4}');
SELECT dVal1,dVal2,seq_mod(dVal1,dVal2) As "mod" FROM SimpleSequence where testNumber=2;
dVal1{}
dVal2{}
mod{}
--------------------------------------------------------------------
{6.000000, 7.000000}
{3.000000, 4.000000}
{0.000000, 3.000000}
示例脚本
可以在 samples/xsql/scripts/financial 目录中使用以下命令运行此 select 语句的示例脚本:
f 3