Select kdb 中的语句不起作用

Select statement in kdb not working

我有一个问题,KDB 中的 select 语句给出了奇怪的结果。数据是 OPRA 数据。即列出的选项交换数据。查询的目的是以 10 分钟为间隔给出特定 EXERCISE_PRICEEXERCISE_DATE 的最后一个 ASK_PRICE。 table 只有 1 天。所以语句看起来像(并给出空结果):

select
    last ASK_PRICE by 10 xbar TRADE_TIME.minute 
from
    trade
where
    EXERCISE_PRICE=12 and EXPIRATION_DATE=2014.01.18

如果我更改语句以查看是否有适合查询的数据,我尝试过:

select
    last ASK_PRICE,EXERCISE_PRICE by 10 xbar TRADE_TIME.minute
from
    trade
where
    EXERCISE_PRICE>12 and EXPIRATION_DATE=2014.01.18

我得到以下结果,结果中显示的 EXERCISE_PRICE 为 12,但也有小于 12 的值。结果被截断:

minute  ASK_PRICE EXERCISE_PRICE (the table header)

09:50   6.2 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 11 11 12 12 12 12 13 14 14 14 14 14 24 24 24 24 24 24 24 24 17 17 17 10 10 

请注意结果中 ASK_PRICE 为 6.2,其余值为 EXERCISE_PRICE。也就是说,时间段 09:50.

的所有 EXERCISE_PRICE

所以真的不清楚为什么当我指定 >12 时我得到的值低于 12。当我指定 = 12 时,我什么也得不到。

table 上的元信息给出了列 EXERCISE_PRICE 的类型 f、列 EXERCISE_DATE 的类型 d、列 TRADE_TIME 的类型 t 和 ASK_PRICE 作为 f。

您的查询中似乎存在隐藏错误。 当您在 where 子句中使用 and 时,它等同于 运行:

"where EXERCISE_PRICE>(12 and EXPIRATION_DATE=2014.01.18)"

这是因为 kdb+ 从右到左求值 - 尝试使用 ,(逗号)分隔您的 where 条件。

q)select last ASK_PRICE,EXERCISE_PRICE by 10 xbar TRADE_TIME.minute from trade where EXERCISE_PRICE>12 , EXPIRATION_DATE=2014.01.18