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

问题描述

编写一个 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
,

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

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

向量条件只能返回两个结果之一,这取决于条件是真还是假。要将限制扩展到您想要的内容,您可以将条件嵌套在彼此内部。所以喜欢:

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...