如何在具有NULL值的字段上进行分组?

时间:2012-10-13 04:57:25

标签: sql sqlite null count group-by

我有一个包含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.
但输出为空0.
这是什么意思?

2 个答案:

答案 0 :(得分:14)

From Aggregate Functions in 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

See this SQLFiddle

答案 1 :(得分:0)

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

只需运行以下查询,即可获得所需的结果

Select y,count(isnull(y,-1)) as [Count]
from mytable
group by y