无效的postgresql表中的空计数和已填充计数

无效的postgresql表中的空计数和已填充计数,sql,postgresql,Sql,Postgresql,我需要计算一个表中有多少字段是空的、空的和填充的。 其中,每列将是一个字段,例如: select COUNT(1), case when table.name is null then 'Null' when table.name = '' then 'Empty' else 'Filled' end from table (这是一个示例) 有人知道我该怎么做吗?此表大约有30列。您可以将每一行转换为一个JSON值,然后根据这些JSON值的键(即列名

我需要计算一个表中有多少字段是空的、空的和填充的。 其中,每列将是一个字段,例如:

select COUNT(1),
  case when table.name is null
        then 'Null'
  when table.name = ''
        then 'Empty'
  else 'Filled' end
from table
这是一个示例)


有人知道我该怎么做吗?此表大约有30列。

您可以将每一行转换为一个JSON值,然后根据这些JSON值的键(即列名)进行分组:


请注意,这将比像您那样手动列出每一列要慢得多

整数列的
null
和“empty”有什么区别?整数列就是一个例子,我有30多个不同类型的列。哇,这太神奇了,我甚至在解释所有这些方面都有困难!它工作得很好,我对一些栏目进行了限制,速度非常快,谢谢!
FIELD   NULL    EMPTY    FILLED
name     0         2       98
age     10        10       80
heigh    0        50       50
select d.col, 
       count(*) filter (where value is null) as null_count,
       count(*) filter (where value is not null) as not_null_count,
       count(*) filter (where value = '') as empty
from the_table t
  cross join jsonb_each_text(to_jsonb(t)) as d(col, value)
group by d.col;