我有一个由供应商提供的数据的大表(我无法对其进行太多更改),大约有 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)