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中这只是引用了第一列。