提问人:Surjya Narayana Padhi 提问时间:12/27/2018 更新时间:11/16/2023 访问量:25244
如何在postgresql中计算空值?
How to count null values in postgresql?
问:
select distinct "column" from table;
输出:
column
1 0.0
2 [null]
3 1.0
但是当我尝试计算空值时
select count("column") from train where "column" is NULL;
给出输出 0(零)
你能说说哪里出了问题吗?
答:
21赞
Gordon Linoff
12/27/2018
#1
用:count(*)
select count(*) from train where "column" is NULL;
count()
使用任何其他参数计数非 NULL 值,因此没有 if is 。"column"
NULL
8赞
Guigoz
1/27/2020
#2
当您想要计算聚合(包括 NULL 值)但无法使用(如果其他列也不同)时,有一些解决方法。count(*)
在这些情况下,您可以使用以下请求:
count(distinct("column")) + (CASE bool_or("column" is null) WHEN true THEN 1 ELSE 0 END)
将计算非 null 值,如果有 null 值,另一部分将添加count(distinct(column))
1
18赞
Eldar Agalarov
2/10/2021
#3
使用 SUM
SELECT SUM(CASE WHEN column IS NULL THEN 1 ELSE 0 END) AS column_null_tally
FROM table;
评论
0赞
Vasilii Suricov
11/16/2023
SUM((column IS NULL)::int) AS column_null_tally
也会做同样的事情
0赞
Luis Garcia
12/24/2021
#4
你得到零,因为你要计算 null(空)值,你需要计算不为空的字段的值,比如 id 字段。
select count("id_column") from train where "data_column" is NULL;
5赞
Vasilii Suricov
2/4/2022
#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";
0赞
questionto42
12/18/2022
#6
因为
select count(coalesce(t."column", 0)) from table t
是完整的行数,带和不带 NULL:s 和select count(t."column") from table t
是没有 NULL:s 的行数,
这也有效:
Select count(coalesce(t."column", 0)) - count(t."column") FROM table t;
(这个答案也可能帮助那些来这里计算 NULL 和不 NULL 的人,至少我被困在这里,因为我正在寻找它)。
评论
count(*)
column_name