Я пытался получить статистику из своих таблиц. Ниже я попытался нарисовать структуру своей таблицы:

В приведенном выше примере у меня есть таблица Сделка, в которой каждая транзакция записывается для каждого пользователя Профиль (profile_id). Кроме того, я записываю дату создания транзакции pub_date, Тип операции (варианты типа показаны в кружке) и транзакцию количество. При создании транзакции я даю Бонус каждой транзакции с соответствующим Профиль (profile_id).
Итак, я хочу получить статистику из приведенных выше таблиц в пределах диапазона дат. Точнее:
Визуально я хочу такой результат.

Здесь выбранный диапазон дат означает, что я дам запросу период Дата начала и Дата окончания.
Удалось решить 1. и 2.. Но я не смог найти способ (для 3.) к СУММ суммы БОНУС каждого профиля в пределах диапазона дат. Мое решение следующее:
SELECT mtd.profile_id, sum(mtd.amount) AS summa_deposit,
(
SELECT sum(mtw.amount) AS summa_withdraw
FROM public.main_transaction AS mtw
WHERE mtw.profile_id=mtd.profile_id AND mtw.pub_date>='2017-01-01' AND mtw.pub_date<='2017-10-01' AND mtw.transaction_type IN ('WITHDRAW','WITHDRAW_MANUAL')
)
FROM public.main_transaction AS mtd
WHERE mtd.pub_date>='2017-01-01' AND mtd.pub_date<='2017-10-01' AND mtd.transaction_type IN ('DEPOSIT','DEPOSIT_MANUAL')
GROUP BY mtd.profile_id
ORDER BY mtd.profile_id;
Получить общую сумму бонуса каждого профиля здесь не проблема. Проблема в том, чтобы получить эту сумму в пределах диапазон дат. Потому что я не записываю дату в свою таблицу Бонус. У меня только свои ID транзакции и profile_id
P.S. моя таблица находится в PostGreSQL.


Вам просто нужен еще один join в подзапросе?
(SELECT SUM(b.amount) AS summa_bonus
FROM public.bonus b JOIN
public.main_transaction mtw
ON b.transaction_id = mtw.id
WHERE mtw.profile_id = mtd.profile_id AND
mtw.pub_date >= '2017-01-01' AND
mtw.pub_date <= '2017-10-01' AND
mtw.transaction_type IN ('WITHDRAW', 'WITHDRAW_MANUAL')
)
Не знаю, нужен ли фильтр на transaction_type.
Спасибо за помощь. Да здесь transaction_type ненужная. Но актуальность есть. Это еще одна проблема, с которой я могу справиться. :)
Примеры данных (и, возможно, SQL Fiddle!) Действительно помогут.