Вы можете использовать case
выражение
SELECT userid,
SUM(case when type = 'i' then total else 0 end) typei,
SUM(case when type = 'p' then total else 0 end) typep,
SUM(case when type = 'i' then total else 0 end) - SUM(case when type = 'p' then total else 0 end) as diff
FROM invoices
GROUP BY userid
Или вы могли бы написать это как
SUM(case when type = 'i' then total when type = 'p' then -1 * total else 0 end) as diff
Редактировать: чтобы отфильтровать результаты, полученные агрегацией, вы можете использовать пункт
SELECT userid,
SUM(case when type = 'i' then total else 0 end) typei,
SUM(case when type = 'p' then total else 0 end) typep,
SUM(case when type = 'i' then total else 0 end) - SUM(case when type = 'p' then total else 0 end) as diff
FROM invoices
GROUP BY userid
HAVING diff > 0