1

我们可以在 kdb+ 中按几列分组:

q)t:([]a:1 1 3;b:1 1 4;c:7 8 9);
q)select sum c by grp:([]a;b) from t
grp     | c
--------| --
`a`b!1 1| 15
`a`b!3 4| 9
q)gcols:`a`b

但是,如果需要分组的列在变量中,如何对函数形式(如何构建正确的解析树)做同样的事情gcols

4

1 回答 1

1

更传统的分组方式是:

q)select sum c by a,b from t
a b| c
---| --
1 1| 15
3 4| 9

其功能形式将是

q)?[t;();{x!x}gcols;(1#`c)!enlist(sum;`c)]
a b| c
---| --
1 1| 15
3 4| 9

您的分组风格的功能形式是:

q)?[t;();(1#`grp)!enlist(flip;(!;enlist gcols;enlist,gcols));(1#`c)!enlist(sum;`c)]
grp     | c
--------| --
`a`b!1 1| 15
`a`b!3 4| 9
于 2020-08-31T08:36:30.007 回答