如何在postgresql中计算空值?

Sur*_*dhi 0 sql postgresql null count

select distinct "column" from table;
Run Code Online (Sandbox Code Playgroud)

输出:

    column
1     0.0
2     [null]
3     1.0
Run Code Online (Sandbox Code Playgroud)

但是当我尝试计算空值时

select count("column") from train where "column" is NULL;
Run Code Online (Sandbox Code Playgroud)

输出0(零)

你能说出哪里出错吗?

Eld*_*rov 18

使用求和

SELECT SUM(CASE WHEN column IS NULL THEN 1 ELSE 0 END) AS column_null_tally
FROM table;
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 7

用途count(*):

select count(*) from train where "column" is NULL;
Run Code Online (Sandbox Code Playgroud)

count()使用任何其他参数计算非NULL值,因此如果"column"是,则没有NULL.


Gui*_*goz 5

当您想要计算聚合值(包括 NULL 值)但不能使用count(*)(如果其他列也不同)时的一些解决方法。

在这些情况下,您可以使用此请求:

count(distinct("column")) + (CASE bool_or("column" is null) WHEN true THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)

count(distinct(column))将计算非空值,而另一部分将增加1,如果有一个空值


Vas*_*cov 5

使用FILTER

SELECT
  COUNT(*) FILTER (WHERE "column" IS NULL) AS is_null,
  COUNT(*) FILTER (WHERE "column" < 1.0) AS lt_one,
  COUNT(*) FILTER (WHERE "column" > 1.0) AS gt_one,
  COUNT(*) FILTER (WHERE "column" = 1.0) AS just_perfect
FROM "table";
Run Code Online (Sandbox Code Playgroud)