编写一个 Q-SQL 查询,将 BA.N 的价格乘以 2,GS.N 乘以 3,MSFT.O 乘以 4,并使用向量条件语句调用列 newPrice

Write a Q-SQL query to multiply the price of BA.N by 2, GS.N by 3 and MSFT.O by 4 and call the column newPrice using vector conditional statement

编写一个 Q-SQL 查询,将 BA.N 的价格乘以 2,GS.N 乘以 3,MSFT.O 乘以 4,并使用向量调用列 newPrice条件语句

tab2:`syms`prices!(`MSFT.O`GS.N`BA.N;45.15 191.10 178.50)
flip tab2

select syms,prices,newPrice:(prices*(4,3,2)) from flip tab2

您应该创建乘数图

(`MSFT.O`GS.N`BA.N!2 3 4)

并根据行符号将每个价格乘以地图中的值:

update newPrice: prices*(`MSFT.O`GS.N`BA.N!2 3 4)syms from flip tab2

我不确定使用条件向量是否是解决此问题的最简单方法。例如,您可以使用简单的字典来实现类似的效果。首先定义一个字典,将您的符号映射到它们的乘数,然后在您的 select 语句中使用该字典:

tab2: flip `syms`prices!(`MSFT.O`GS.N`BA.N;45.15 191.10 178.50)
d: `MSFT.O`GS.N`BA.N!4 3 2;

select syms, prices, newPrice: prices*d[syms] from tab2
syms   prices newPrice
----------------------
MSFT.O 45.15  180.6
GS.N   191.1  573.3
BA.N   178.5  357

矢量条件只能 return 两个结果之一,具体取决于条件是真还是假。要将该限制扩展到您想要的,您可以将条件语句彼此嵌套。所以喜欢:

select syms, prices, newPrice: ?[syms=`MSFT.O; prices*4; ?[syms=`GS.N; prices*3; ?[syms=`BA.N;prices*2;prices]]] from tab2

但这很快就会变得笨拙并且无法很好地扩展。如果你添加更多的符号,更新字典会很容易,但更新条件很烦人。