示例:筛选序列元素
筛选序列中的元素 - 提取 2013 年 2 月收盘价高于开盘价的日期:
SELECT symbol, seq_search(day, 20130201, 20130228) as Feb_2013,
close@Feb_2013 as Feb_Close, open@Feb_2013 as Feb_Open,
seq_filter(Feb_Close > Feb_Open, Feb_2013) as "up_Feb",
seq_filter(Feb_Close > Feb_Open, Feb_Open) as "up_Open",
seq_filter(Feb_Close > Feb_Open, Feb_Close) as "up_Close"
FROM Quote WHERE symbol='IBM';
symbol
Feb_2013{}
Feb_Close{}
Feb_Open{}
up_Feb{}
up_Open{}
up_Close{}
------------------------------------------------------------------------------
IBM
{20130201, 20130204, 20130205, 20130206, 20130207, 20130208,
20130211, 20130212, 20130213, 20130214, 20130215, 20130219,
20130220, 20130221, 20130222, 20130225, 20130226, 20130227,
20130228}
{205.179993, 203.789993, 202.789993, 201.020004, 199.740005, 201.679993,
200.160004, 200.039993, 200.089996, 199.649994, 200.979996, 200.320007,
199.309998, 198.330002, 201.089996, 197.509995, 199.139999, 202.330002,
200.830002}
{204.649994, 204.190002, 204.309998, 200.389999, 200.619995, 199.970001,
200.979996, 200.009995, 200.649994, 199.729996, 199.979996, 200.600006,
200.619995, 198.630005, 199.229996, 201.669998, 198.630005, 198.889999,
202.179993}
{20130201, 20130206, 20130208, 20130212, 20130215, 20130222,
20130226, 20130227}
{204.649994, 200.389999, 199.970001, 200.009995, 199.979996, 199.229996,
198.630005, 198.889999}
{205.179993, 201.020004, 201.679993, 200.039993, 200.979996, 201.089996,
199.139999, 202.330002}
up_Feb 序列包含了 2013 年 2 月收盘价高于开盘价的日期。为了说明这一点,我们在 up_Feb 序列中突出显示了 2013 年 2 月 8 日的日期值,它与 up_Open 和 up_Close 序列中的第 3 个元素相对应,并且满足筛选条件,即 201.68 > 199.97。
(请注意,多次调用函数 seq_filter() 是必要的,以生成经过筛选的开盘价和收盘价序列,从而使输出更易于理解,因为无法抑制的 Feb_2013、Feb_Open 和 Feb_Close 序列在一定程度上掩盖了关键信息。)
要运行此示例脚本以演示此选择语句,请在 samples/xsql/scripts/financial 目录中使用以下命令:
x 5