Доработать sql запрос для PostgreSQL

Гость6 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
11.11.2018

Есть 2 таблицы, в которых хранятся фактический доход и цена в разрезе пакетов(package) и обьявлений(object) http://take.ms/TlPWQ

Одному обьявлению могут соответствовать много пакетов. 

В запросе я джойню таблицы purchase и purchase_info для того чтобы получить детализацию дохода до пакетов(package) и обьявлений(object).

Нужно фактический доход в разрезе ордеров (purchase_id) разбить до пакетов и обьявлений, а total_sum не разбивается,  а а дублируется http://take.ms/BUEBo . В чем разница:

В sum - это цена пакета,

но по факту может зайти больше денег чем по цене - cпецифика платежной системы, например 

http://take.ms/rzkZ4 .

Как я вижу сейчас (в файле пример расчета):

1. Нужно проверить совпадает ли сумма в перчэйс с двух таблиц, то есть total sum= sum  --> варианты True\False http://take.ms/bynKd

2.1. Для True берем sum(то есть число с таблицы purchase_info)

2.2. Для False разницу разносим по стоимости пакета http://take.ms/deFlY

Запрос (данные под этим запросом в файле большая выборка)

select  

      user_id, device, purchase.usd_total_sum, purchase.id purchase_id, purchase.total_sum,sum, purchase_info.usd_sum, purchase.payment_status status, to_timestamp(purchase.created_at) as date, 

    object_id, package.name package,  payment_system.country_id, payment_system.name payment_system 

from 

    public.purchase_info, currency_rate, package, purchase, payment_system 

where 

    purchase_info.package_id=package.id and purchase.id=purchase_info.purchase_id and purchase.payment_system_id=payment_system.id

group by 

    user_id,   purchase.created_at, purchase.usd_total_sum, purchase.total_sum, purchase.payment_status,purchase.created_at,purchase_info.usd_sum,

    object_id, package, device, payment_system.country_id,purchase.id, payment_system, purchase.total_sum,sum, purchase_info.currency;