BEGIN;
SET LOCAL statement_timeout = '20s';
EXPLAIN (ANALYZE, BUFFERS, TIMING OFF)
WITH charge_operations AS MATERIALIZED (
SELECT o.id
FROM back_office.operation o
WHERE o.operation_type_id = (
SELECT id
FROM back_office.operation_type
WHERE code = 'CHARGE_FROM_RESERVE'
)
AND o.ops_assignee_decision_id IS NOT NULL
AND o.approved IS NOT NULL
AND o.deleted IS NULL
AND o.effective_date <= current_date
)
SELECT sum(t.value)
FROM charge_operations co
CROSS JOIN LATERAL (
SELECT
tr.credit_account_id,
tr.value
FROM back_office.transaction tr
WHERE tr.operation_id = co.id
OFFSET 0
) t
JOIN back_office.account ca
ON ca.id = t.credit_account_id
WHERE ca.account_type_id = (
SELECT id
FROM back_office.account_type
WHERE mnemonics = 'НВ ПП ОПС'
);
ROLLBACK;