为什么在kdb中进行求和时它是空白的?

时间:2016-11-08 20:32:58

标签: kdb

我做了一个简单的查询:

select sum(sol) from data

并为结果返回空白。我检查是否有任何null,它没有任何空值。我怎么知道出了什么问题?

2 个答案:

答案 0 :(得分:2)

您的总和可能太大而无法存储为整数?这将创建一个空白/ null

q)tab:([] col1:1 2i,0Wi-1i)
q)
q)tab
col1
----------
1
2
2147483646
q)
q)meta tab
c   | t f a
----| -----
col1| i
q)
q)
q)select sum col1 from tab
col1
----

q)

答案 1 :(得分:1)

确保您没有将结果分配给变量或以分号结束行,因为这会抑制结果的立即输出。

q)data:([]sol:1 2 3 4 5)
q)
q) /Expected result.
q)select sum(sol) from data
sol
---
15
q)
q) /Output suppressed by semi-colon.
q)select sum(sol) from data;
q)
q) /Output suppressed by variable assignment.
q)example:select sum(sol) from data
q)

此外,即使数据中没有记录(例如:count data = 0),它仍会输出列名,但下面没有结果。

q)data:([]sol:())
q)
q)select sum(sol) from data
sol
---

q)

数据集中的空值不应影响输出(至少为和),但如果要替换空值(例如,可以为零)

q)update 0^sol from `data

此用法是^ (fill)运算符。