Se rendi le tue due query compatibili con l'unione, puoi combinare i risultati e aggregarli con una query aggiuntiva:
SELECT payer,
sum(churned_accounts) AS "churned_count",
sum(total_accounts) AS "total_count"
FROM (
SELECT CAST(payor_id AS CHAR(50)) AS "payer",
count(*) as "churned accounts",
0 AS "total accounts"
FROM paid_users_no_more
INNER JOIN paid_users
ON paid_users_no_more.user_id=paid_users.user_id
WHERE paid_users.payment_start_date NOT BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp
AND paid_users_no_more.payment_stop_date BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp
GROUP BY paid_users.payor_id
UNION
SELECT CAST(paid_users.payor_email AS CHAR(50)) AS "payer",
0 AS "churned accounts",
count(*) AS "total accounts"
FROM paid_users
WHERE paid_users.payment_start_date NOT BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp
GROUP BY paid_users.payor_email
) as All_Accounts
Avere il 0 AS "total_accounts"
e 0 AS "churned_accounts"
significa che le due query hanno gli stessi campi presenti, che fanno il UNION
possibile.