【发布时间】:2019-10-07 15:49:04
【问题描述】:
我有一个函数,它将表中的一些值作为输入,如果你愿意,它会返回一个元组 - 三个单独的返回值,我想将它们转换为查询的输出。这是我想要实现的简化示例:
multiplier:{(x*2;x*3;x*3)};
select twoX:multiplier[price][0]; threeX:multiplier[price][1]; fourX:multiplier[price][2] from data;
上面的内容基本上是有效的(我认为我已经为简化的示例找到了正确的语法 - 如果不是,那么希望我的意图很清楚),但效率低下,因为我调用了该函数 3 次并丢弃了大部分每次输出。我想重写查询只调用一次函数,我很挣扎。
更新
我认为我在解释影响结果的问题时遗漏了一条关键信息——我需要在查询中获取其他数据以及我的函数输出。这是一个更现实的例子:
multiplier:{(x*2;x*3;x*4)};
select average:avg price, total:sum price, twoX:multiplier[sum price][0]; threeX:multiplier[sum price][1]; fourX:multiplier[sum price][2] by category from data;
无论如何,我都会尝试调整您的答案以适应此要求,并为错过这一点信息而道歉。如果一个专有且相当复杂的算法和真正的查询有大约 30 个输出列,那么真正的功能,因此试图简化示例:)
【问题讨论】:
标签: kdb