Kdb 使用计数1获取表行计数

Kdb 使用计数1获取表行计数,kdb,k,Kdb,K,为了获得适当的表行数,我认为应该使用一种简单的方法:使用count1construct。它在一个简单的情况下起作用: q)t:([]sym:`a`a`b`b); q)select cnt: count 1 by sym from t sym| cnt ---| --- a | 2 b | 2 但当我添加其他字段时,我得到了错误的结果: q)select cnt: count 1, sym by sym from t sym| cnt sym ---| ------- a | 1 a

为了获得适当的表行数,我认为应该使用一种简单的方法:使用
count1
construct。它在一个简单的情况下起作用:

q)t:([]sym:`a`a`b`b);
q)select cnt: count 1 by sym from t
sym| cnt
---| ---
a  | 2
b  | 2
但当我添加其他字段时,我得到了错误的结果:

q)select cnt: count 1, sym by sym from t
sym| cnt sym
---| -------
a  | 1   a a
b  | 1   b b
为什么
count 1
在一个列的情况下有效(或者看起来如此),但在多个列的情况下失败


Upd:预计会得到这样的结果

sym| cnt sym
---| -------
a  | 2   a a
b  | 2   b b

我认为计数1不会产生你想要的结果,甚至不会产生一致的结果

我想你可能想用
counti
来代替。选择“按符号计数”时,您指定了要按哪个列计数

q)t:([]sym:`a`a`b`b)
q)select cnt:count i,sym by sym from t
sym| cnt sym
---| -------
a  | 2   a a
b  | 2   b b
q).z.K
3.6
但是需要注意的是,这个解决方案在kdb+4.0上不起作用

q)t:([]sym:`a`a`b`b)
q)select cnt:count i,sym by sym from t
'dup names for cols/groups sym
  [0]  select cnt:count i,sym by sym from t
                                    ^
q).z.K
4f

您能否共享此查询的预期输出?另外,您试图使用的是
count i
还是
count l
count 1
——就像在Oracle中一样,尽管在Oracle中这只是引用了第一列。