\set ON_ERROR_STOP on CREATE TEMP TABLE _staff_restore_counts (table_name text NOT NULL, tenant_id varchar(26) NOT NULL, row_count bigint NOT NULL); DO $$ DECLARE item record; BEGIN FOR item IN SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'public' AND c.relkind IN ('r', 'p') AND left(c.relname, 6) = 'staff_' ORDER BY c.relname LOOP EXECUTE format( 'INSERT INTO _staff_restore_counts SELECT %L, tenant_id, count(*) FROM public.%I GROUP BY tenant_id', item.relname, item.relname ); END LOOP; END $$; SELECT table_name, tenant_id, row_count FROM _staff_restore_counts ORDER BY table_name, tenant_id; SELECT 'RLS', count(*), bool_and(c.relrowsecurity AND c.relforcerowsecurity) FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'public' AND c.relkind IN ('r', 'p') AND left(c.relname, 6) = 'staff_'; SELECT 'LEDGER', tenant_id, currency_code, sum(amount_minor) FROM public.staff_payroll_ledger GROUP BY tenant_id, currency_code ORDER BY tenant_id, currency_code;