我认为我的问题与this one相同,但并不清楚,因此回复并不是我所寻找的。 p>
我有一个由osm2pgsql构建的70列和大约一百万行的表。在70列中,每行只有2个值(一个是带有索引的地理位置),其余的则形成一个稀疏矩阵。
我在这个fiddle中加入了我所拥有的和我想要的简化版本。 这里有一点解释:每列的每个值都有计数,每列也都有计数,有一个NULL值表示它是列数。
答案 0 :(得分:0)
我得到了部分回应:
SELECT string_agg(
'SELECT ' ||
'''' || quote_ident(attname) || ''' as column_name, ' ||
quote_ident(attname) || '::text as value_name, ' ||
' count(*) as value_count' ||
' FROM ' || attrelid::regclass ||
-- ' WHERE ' || quote_ident(attname) || ' is not NULL' ||
' GROUP BY ' || quote_ident(attname) || ' ',
'UNION ALL ')
FROM pg_attribute
WHERE attrelid = '<my_table_name>'::regclass
AND attnum >= 1 -- exclude tableoid & friends (neg. attnum)
AND attisdropped is FALSE -- exclude deleted columns
GROUP BY attrelid;
感谢that thread。