У меня есть таблица Oracle SQL, которая содержит всю торговую информацию по FX, связанную с сделками, совершенными клиентами. Запись создается для начальной сделки открытия, а затем создается другая запись, когда эта сделка закрывается Вторая запись содержит информацию о прибыли / убытке по этой сделке. Идентификатор начальной сделки также фиксируется во второй записи как 'initial_trade_id' (или заполняется 0, если запись предназначена для начальной сделки)
Что я хотел бы - это рассчитать долю клиентов, которые сделали успешных прибыльных сделок в течение месяца после их первой сделки. Я только хочу рассмотреть сделки, которые были закрыты, и забыть активные. Окончательный результат должен отвечать этому утверждению: «Из числа клиентов, которые торговали в течение месяца с момента первой сделки, число X в целом было прибыльным, а число Y - убыточным в целом»
Схема таблицы такая (игнорируя нерегулярные столбцы):
+--------------------------+
| TRADE_ID |
| TRADE_TIMESTAMP | => 'DD-MON-YY HH-MM-SS'
| CLIENT_ID |
| INITIAL_TRADE_ID | => is 0 if entry is the initial trade or 'TRADE_ID' if closing trade
| TRADE_PROFIT_LOSS_AMOUNT | => can be positive or negative
+--------------------------+
Примером пары записей будет
+-------+----------------------+-----+-------+-----+
| ZXCVB | 12-JAN-2020 08.00.00 | 123 | ASDFG | 159 |
+-------+----------------------+-----+-------+-----+
| ASDFG | 01-JAN-2020 14.00.00 | 123 | 0 | 0 |
+-------+----------------------+-----+-------+-----+
. Сначала я думал об этом, чтобы использовать ROWNUM для получения первой сделки для каждого клиента, а затем искать закрытие. сделки, которые находятся в пределах месяца с этой первой торговой даты, перед тем как получить СРЕДНЕЕ на каждого клиента, затем использовать SUM и CASE на основе положительного / отрицательного значения avg для получения доли успешных сделок. Однако у меня возникли проблемы с обработкой этого запроса, поэтому любая помощь будет оценена.
В конце я бы хотел получить:
+----------------------------+--------------------------+
| PROFIT_MAKING_CLIENT_COUNT | LOSS_MAKING_CLIENT_COUNT |
+----------------------------+--------------------------+
| 924 | 459 |
+----------------------------+--------------------------+
, т. Е. Если через месяц Среднее значение клиента TRADE_PROFIT_LOSS_AMOUNT является положительным на основе всех их закрытых сделок, к PROFIT_MAKING_CLIENT_COUNT (и наоборот) добавляется число, равное одному