Сначала попробуйте сами: на собеседовании подсказки не будет.
Месяц как текст 2018-12 даёт to_char(trans_date, 'YYYY-MM'). Группируем по месяцу и стране, общие показатели считаем обычными агрегатами, одобренные через FILTER (WHERE state = 'approved').
У страны без одобренных транзакций sum(...) FILTER вернёт NULL, а по условию нужен 0, поэтому coalesce. count(*) FILTER NULL не даёт.
SELECT to_char(trans_date, 'YYYY-MM') AS month, country, count(*) AS trans_count, count(*) FILTER (WHERE state = 'approved') AS approved_count, sum(amount) AS trans_total_amount, coalesce(sum(amount) FILTER (WHERE state = 'approved'), 0) AS approved_total_amount FROM transactions GROUP BY 1, 2