SELECT c.user_id, SUM(c.amount) FROM ( SELECT d.user_id AS user_id, -(d.amount) AS amount FROM demand d WHERE d.cancel_date IS NULL UNION ALL SELECT p.user_id AS user_id, p.amount AS amount FROM payment p WHERE p.cancel_date IS NULL ) c GROUP BY c.user_id