使用kdb+的by关键字分组后,如何合并同name的行?
解决方案
要实现按name合并行,将同name的ptype合并为符号列表、qtix求和,你需要在select语句中明确指定每一列的聚合逻辑,而非仅用by name:
tbl: select ptype: ptype, qtix: sum qtix by name from tbl
说明
sum qtix:对每个name分组下的qtix值求和,得到该name对应的总数量ptype: ptype:保留每个name分组下的所有ptype符号,自动组成符号列表(比如PQRS对应的BLUE`RED)by name:以name作为分组键,确保结果中每个name仅出现一行
你之前执行的select by name from tbl仅会取每个分组的第一行数据,这是因为KDB+在未指定列聚合方式时,默认采用first函数取分组内的首个值,而非合并所有行。
如果需要将ptype显示为拼接的字符串(比如"BLUERED"),可以进一步处理:
tbl: select ptype: "`" sv string ptype, qtix: sum qtix by name from tbl
内容的提问来源于stack exchange,提问作者vicefreak04
相关产品推荐
相关产品推荐

