You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KDB中按分组列聚合所有列(无需逐列指定)

KDB+按组批量聚合非分组列的方法

首先给出示例表的定义:

j:([] x: til 10; y: til 10; g: 10#`a`b`c)

表结构如下:

x y g
-----
0 0 a
1 1 b
2 2 c
3 3 a
4 4 b
5 5 c
6 6 a
7 7 b
8 8 c
9 9 a

问题需求

如何按g分组时,无需逐个显式指定列名(比如sum x, sum y),就能对所有非分组列统一应用聚合操作?像select sum by g from j这种简洁写法无法运行,而逐个列指定的方式又不够高效。

解决方案

可以利用KDB+的cols函数获取表的所有列名,排除分组列后,结合each操作符批量对列应用聚合函数,示例写法如下:

select sum each (cols[j] except `g) by g from j

运行后会得到按g分组,对x和y列分别求和的结果:

g | x  y
--------
a | 18 18
b | 12 12
c | 15 15

如果需要更换聚合函数(比如求平均值),只需替换sum即可:

select avg each (cols[j] except `g) by g from j

这种写法的优势在于,即使后续表中新增了其他非分组列,也无需修改聚合语句,会自动对所有非分组列应用指定的聚合操作。

内容的提问来源于stack exchange,提问作者cjm2671

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:20:27