如何在kdb/q中按符号对值求和,并输出到汇总数据的新表

问题描述 投票:0回答:1

我有一个表,其中包含某个品种的增量数据,我想要做的是聚合数据并创建一个汇总表,其中仅显示品种、可用数据的最早时间以及数据的总和。

但是,在尝试按符号分组时,我遇到了障碍,并且我不确定如何获取每个符号的最早数据时间,并且感谢您提出的任何建议。

我的数据如下所示:

日期时间 符号 价值
1/1/20 凌晨 2 点 A 2
20年1月1日中午12点 A 5
20年1月1日下午3点 A 1
20年1月1日晚上9点 A 4
1/1/20 凌晨 2 点 B 1
20年1月1日中午12点 B 3
20年1月1日下午3点 B 6
20年1月1日晚上9点 B 9

我正在尝试如何制作一张看起来像这样的桌子:

日期时间 符号 价值
1/1/20 凌晨 2 点 A 12
1/1/20 凌晨 2 点 B 19

这是我目前拥有的:

update Sum: sums (sums;Value) fby Symbol from TABLE

但这只是复制表格并在其右侧添加一个名为“Sum”的列,按“符号”对先前的金额求和。请注意,这也不会尝试获取每个符号的第一个日期时间值。

我也尝试过这个:

update (NEW: sum Value by Symbol) by DateTime from TABLE

我的想法是,这可能会得到按符号列出的所有值的总和,然后我可以保留每个符号的最早日期时间,在此过程中创建一个名为 NEW 的表,但这根本不起作用。当我运行这个时,它给了我一个错误,说“by”关键字不知何故不正确:

[0]  update (NEW: sum Value by Symbol) by DateTime from TABLE
                                       ^

我感谢 kdb/q 社区的任何帮助。我希望我有足够的经验来理解错误消息。我觉得 fby 很有帮助,但这可能只是向相关表添加新列,所以不确定是否有其他函数对我的情况有帮助。

aggregate aggregation kdb
1个回答
0
投票

和你昨天的问题类似,通过一句话就能达到你想要的效果:

select min DateTime, sum Value by Symbol from TABLE

https://code.kx.com/q/ref/select/#by-phrase

© www.soinside.com 2019 - 2024. All rights reserved.