Select kdb 中的语句不起作用
Select statement in kdb not working
我有一个问题,KDB 中的 select 语句给出了奇怪的结果。数据是 OPRA 数据。即列出的选项交换数据。查询的目的是以 10 分钟为间隔给出特定 EXERCISE_PRICE
和 EXERCISE_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
我有一个问题,KDB 中的 select 语句给出了奇怪的结果。数据是 OPRA 数据。即列出的选项交换数据。查询的目的是以 10 分钟为间隔给出特定 EXERCISE_PRICE
和 EXERCISE_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