我试图根据它们是多头(+ve值(还是空头(-ve值(对查询中的交易进行分类
q)R:select sum size by sym from update size:neg size from trades where trades[`side]=`sell
q)R
sym | size
----| ------
AAPL| 22321
CSCO| -20790
DELL| -53614
GOOG| 62652
IBM | 77839
MSFT| -40878
NOK | 14767
ORCL| -53922
我已经设法到达这里,但我似乎无法更新带有多头的正大小值和短的负大小值而不会收到错误消息。 转换 +ve 值的失败尝试如下所示
update size:`long from R where size>0
update size:`long from R where R[`size]>0
更新失败,因为您尝试将某些长类型的列更新为符号类型,这会导致混合列表:
q)update size:?[size>0;`long;`short] from R
稍微快一点的版本:
q) update new_size:`short`long size>0 from R
值得注意的是,null0n
的处理方式小于任何数字,如果R
包含 null,那么它将默认为short
在某些情况下会给您带来意外的结果。
以下空检查将处理该边缘情况。
q)update size:?[null size;`;?[size>0;`long;`short]] from R
但是,在某些情况下,默认为多头或空头可能是完全可以的。