【问题标题】:How can I group by on a field which has NULL values?如何对具有 NULL 值的字段进行分组?
【发布时间】:2012-10-13 04:57:25
【问题描述】:

我有一个包含 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。
什么意思?

【问题讨论】:

    标签: sql sqlite null count group-by


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

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

      只要运行下面的查询,你就会得到想要的结果

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

      【讨论】:

      • 你的意思是 iFnull() ?
      猜你喜欢
      • 1970-01-01
      • 2021-12-07
      • 2016-05-09
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多