Do you need to know which columns takes most disk space in your tables? Here is one useful statement:

with srcdata as (
select table_schema||'.'||table_name as _table, column_name as _column, count(column_name) over (partition by table_schema, table_name) as _column_count
from information_schema.columns
where table_schema||'.'||table_name like '...schema.tablemask%...'
order by table_schema, table_name),
results1 as (select * from srcdata
join lateral (select * from dblink('dbname=...your_database...'::text, 'select
sum(pg_column_size("'||_column||'"))::bigint as total_size,
avg(pg_column_size("'||_column||'"))::numeric as average_size,
case when pg_relation_size('''||_table||''')>0 then sum(pg_column_size("'||_column||'")) * 100.0::numeric / pg_relation_size('''||_table||''') else 0 end as percentage,
pg_relation_size('''||_table||''')::bigint as table_size
from '||_table||'') as t(total_size bigint, average_size numeric, percentage numeric, table_size bigint) ) t on true),
results2 as (select substr(_table, 1, position('_' in _table)) as _tablename, _column, sum(total_size) as _total_column_size, avg(average_size) as average_column_size,
sum(table_size) as _total_table_size,  count(_table) as _tables_count
from results1 group by substr(_table, 1, position('_' in _table)), _column)
select _tablename, _column, round(_total_column_size::numeric / _total_table_size * 100,2) as percentage, round(average_column_size,2) as average_column_size, _total_column_size, _total_table_size, _tables_count
from results2
order by percentage desc nulls last