5

我有一个有 2 个字段的表

 x          y
----       ----
 1         null            
 2          5
 3          5
 4         null
 5         null
 6          10
 7          5

我的 SQLite 查询是

select y,count(y)
from mytable
group by y

结果是

null    0
 5      3
 10     1

预计会看到 null 3。
但是输出为 null 0。
这是什么意思?

4

2 回答 2

14

来自 SQLite 中的聚合函数

count(X) 函数返回组中 X 不为 NULL 的次数的计数。count(*) 函数(不带参数)返回组中的总行数。

因此,该COUNT函数不算数NULL,因此请使用COUNT(*)而不是COUNT(y).

SELECT y, COUNT(*) AS COUNT
FROM mytable
GROUP BY y

或者你也可以COUNT(x)像这样使用。

SELECT y, COUNT(x) AS COUNT
FROM mytable
GROUP BY y

看到这个 SQLFiddle

于 2012-10-13T05:03:06.377 回答
0

您可以在 SQL 中使用 isnull ,它为所有空值赋予不同的身份

只需运行以下查询,您将获得所需的结果

Select y,count(isnull(y,-1)) as [Count]
from mytable
group by y
于 2013-06-21T11:56:26.200 回答