KDB计数列的唯一组合

chr*_*ise 3 kdb

假设我有一张桌子

tbl:flip `id`evt!(1 1 1 2 2 2 2 2 3 3; `a`b`c`a`b`b`b`c`a`c)
Run Code Online (Sandbox Code Playgroud)

如何有效地计算evt的出现次数,但每个id只能计算一次

因此,结果应该如下(或将evt映射到唯一计数的任何其他格式)

res:flip `evt`ct !(`a`b`c; 3 2 3)
Run Code Online (Sandbox Code Playgroud)

Jon*_*ray 5

一种方法是这样的:

q)select count distinct id by evt from tbl
evt| id
---| --
a  | 3
b  | 2
c  | 3
Run Code Online (Sandbox Code Playgroud)

如果您希望它像示例中一样无键,则可以添加0!到开头