从带有where子句的KDB表计数

我知道count table会告诉你表中有多少行,但是你如何从一个带有where子句的表作为过滤器计算?我尝试了PERIOD = x的计数表,但我收到错误:'PERIOD即使PERIOD是表中的一个字段

回答(3)

3 years ago

使用qsql过滤,然后计算结果:

count select from table where PERIOD=x

3 years ago

如果你只需要计数,那就去做吧

exec sum PERIOD=x from table

如果表有很多列,这可能会快得多

count select from table where PERIOD=x

请注意,这会将布尔值的总和计算为32位int,因此如果您的表有超过10亿行,您可能需要添加一个强制转换:

exec sum "j"$PERIOD=x from table

3 years ago

以下将是最有效的 .

select count i from table where PERIOD=x

@jomahony解决方案将要求在执行计数之前从磁盘读取所有列(如果表在磁盘上),因此效率低下