序列顶部函数
概述
以下 C API 函数接受各种输入序列参数,并生成结果序列或标量类型,具体描述见下表:
函数 | 说明 |
---|---|
seq_top_max(n) | 返回整数序列中的前 n 个最大值 |
seq_top_min(n) | 返回整数序列中的前 n 个最小值 |
seq_top_pos_max(n) | 返回整数序列中前 n 个最大值的位置 |
seq_top_pos_min(n) | 返回整数序列中前 n 个最小值的位置 |
seq_top_max()
函数返回输入序列中的最大 N 个值(在此示例中为 3 个)。seq_top_min()
函数返回最小的 N 个值。seq_top_pos_max()
函数返回输入序列中最大 N 个值的位置。seq_top_pos_min()
函数返回输入序列中最小 N 个值的位置。
以下是一个展示这些功能的示例脚本:
create table SimpleSequence( testNumber unsigned(4) primary key,
dVal1 sequence(double), dVal2 sequence(double) );
INSERT INTO SimpleSequence(testNumber,dVal1,dVal2)
VALUES(1,[1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9]);
SELECT dVal1, dVal2, seq_top_max(dVal1,3) as "top_max",
seq_top_pos_max(dVal1,3) as "top_pos_max",
seq_top_min(dVal2,3) as "top_min",
seq_top_pos_min(dVal2,3) as "top_pos_min"
FROM SimpleSequence WHERE testNumber=1;
dVal1{}
dVal2{}
top_max{}
top_pos_max{}
top_min{}
top_pos_min{}
------------------------------------------------------------------------------
{1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 6.000000, 7.000000,
8.000000, 9.000000}
{1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 6.000000, 7.000000,
8.000000, 9.000000}
{9.000000, 8.000000, 7.000000}
{8, 7, 6}
{1.000000, 2.000000, 3.000000}
{0, 1, 2}
可以在 samples/xsql/scripts/financial 目录中使用以下命令运行此 select 语句的示例脚本:
g 11
示例
以下是一个示例代码片段,展示了这些函数的用法:
-- _top_max, _top_min, _top_pos_max, _top_pos_min
CREATE TABLE SimpleSequence11( testNumber unsigned(4) primary key,
dVal1 sequence(double), dVal2 sequence(double) );
INSERT INTO SimpleSequence11(testNumber,dVal1,dVal2)
VALUES(1,[1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9]);
SELECT dVal1, dVal2, seq_top_max(dVal1,3) as "top_max",
seq_top_pos_max(dVal1,3) as "top_pos_max",
seq_top_min(dVal2,3) as "top_min",
seq_top_pos_min(dVal2,3) as "top_pos_min"
FROM SimpleSequence11 WHERE testNumber=1;
dVal1{}
dVal2{}
top_max{}
top_pos_max{}
top_min{}
top_pos_min{}
-------------------------------------------------------------------------
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{9, 8, 7}
{8, 7, 6}
{1, 2, 3}
{0, 1, 2}