KDB计数列的唯一组合

时间:2018-02-22 10:35:15

标签: 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)

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

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

res:flip `evt`ct !(`a`b`c; 3 2 3)

2 个答案:

答案 0 :(得分:5)

这样做的一种方法是:

q)select count distinct id by evt from tbl
evt| id
---| --
a  | 3
b  | 2
c  | 3

如果您希望在样本中取消关键操作,可以在开始时添加0!

答案 1 :(得分:2)

与上述方法非常相似,但在计算npm的出现次数之前,您还可以在整个表格上运行distinct

id