选择kdb中的语句不起作用

时间:2016-09-20 15:43:28

标签: select kdb

我在KDB中使用select语句时出现问题会产生奇怪的结果。数据是OPRA数据。即列出的期权交换数据。查询的目的是以10分钟为间隔为特定EXERCISE_PRICEEXERCISE_DATE提供最后一个ASK_PRICE。该表只有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时,我什么都没得到。

表格中的元信息将列EXERCISE_PRICE列为f类,列EXERCISE_DATE为d,列TRADE_TIME为t,ASK_PRICE为f。

1 个答案:

答案 0 :(得分:4)

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

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

这是因为kdb +从右到左进行评估 - 尝试使用,(逗号)来区分您的条件。

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