我正在尝试根据查询是多头(+ 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
答案 0 :(得分:1)
更新失败,因为您试图将一些长类型的列更新为符号类型,这将导致混合列表:
q)update size:?[size>0;`long;`short] from R
答案 1 :(得分:0)
稍快的版本:
q) update new_size:`short`long size>0 from R
答案 2 :(得分:0)
值得注意的是,对空0n
的处理要少于任何数字,如果R
包含空值,则默认为short
,在某些情况下会给您带来意外的结果。 / p>
以下空检查将解决这种情况。
q)update size:?[null size;`;?[size>0;`long;`short]] from R
但是,在某些情况下,最好默认为long或short。