小编use*_*289的帖子

查询以获取每列值的计数

我有一个由供应商提供的数据的大表(我无法对其进行太多更改),大约有 315 列。我怀疑许多列没有被使用(或者至少不一致)。

我想要一个查询,它可以为我提供表中每列值的计数。

例如

CREATE TABLE foo AS VALUES
    ( null   , 'xyz'  , 'pdq'  , null ),
    ( 'abc'  , 'def'  , 'ghj'  , null ),
    ( 'hsh'  , 'fff'  , 'oko'  , null );
Run Code Online (Sandbox Code Playgroud)

所以这会产生类似的结果:

Col1 | 2
Col2 | 3
Col3 | 3
Col4 | 0
Run Code Online (Sandbox Code Playgroud)

编辑:澄清一下,我知道我可以使用,COUNT但我希望有一种方法可以首先循环遍历系统表的查询,以避免必须手动编写 315 count 语句。谢谢!

就像是

FOR column_names IN SELECT * FROM information_schema.columns WHERE 
table_schema = 'public' AND table_name = 'vendor'
LOOP
 RAISE NOTICE 'doing %s', quote_ident(column_names.column_name);
 SELECT count(column_names.column_name) …
Run Code Online (Sandbox Code Playgroud)

postgresql count postgresql-9.6

2
推荐指数
1
解决办法
4282
查看次数

标签 统计

count ×1

postgresql ×1

postgresql-9.6 ×1