我在KDB中的select语句有问题,给出了奇怪的结果 . 数据是OPRA数据 . 即列出的期权交换数据 . 查询的对象是以10分钟为间隔给出特定 EXERCISE_PRICE
和 EXERCISE_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的值 . 结果被截断:
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 回答
您的查询中存在隐藏错误 . 在where子句中使用 and 时,它等效于运行:
这是因为kdb从右到左进行评估 - 尝试使用
,
(逗号)来分隔您的where条件 .