Итак, у меня есть таблица postgresql, в которую я продолжаю добавлять новые записи с другим элементом
item period cost cost_diff
---------------------------------------------------------
bag 2019-03-15T18:15:00.000Z 100 0
shoe 2019-03-15T18:15:00.000Z 200 0
Итак, когда поступают записи, их cost_diff будет 0. Но когда придет новая, вот так
item period cost cost_diff
---------------------------------------------------------
bag 2019-03-15T18:15:00.000Z 100 0
shoe 2019-03-15T18:15:00.000Z 200 0
bag 2019-03-15T18:30:00.000Z 150 0
shoe 2019-03-15T18:45:00.000Z 300 0
Значение cost_diff старой записи будет обновлено с помощью (новая стоимость - старая стоимость), но оно будет обновлено тогда и только тогда, когда период будет равен следующим 15 минутам, в которые данные будут вставлены в момент времени 0, 15. 30 и 45 минут.
item period cost cost_diff
---------------------------------------------------------
bag 2019-03-15T18:15:00.000Z 100 50 (150-100)
shoe 2019-03-15T18:15:00.000Z 200 0 (no update)
bag 2019-03-15T18:30:00.000Z 150 0
shoe 2019-03-15T18:45:00.000Z 300 0
В приведенной выше таблице показано, что вставляется более новая запись для пакета с диапазоном 15 минут (18: 15-> 18:30), поэтому строка пакета с периодом 18:15 обновит столбец cost_diff до 50 от стоимости из 18:30 минус со стоимостью с 18:15, которая будет 150 - 50 = 100. Хотя старый ряд обуви не будет обновлен (по-прежнему 0), потому что более новая запись обуви не наступит в следующие 15 минут (18:15 -> 18:45), и это будет обновление, когда строка обуви с периодом 18:30 вставляется в таблицу и так далее для других записей (есть много предметов, не только шоу и сумка, как показано).
Итак, как я могу создать базу запросов по этой проблеме, поскольку запись будет продолжать поступать в эту таблицу, может ли это быть сделано исключительно с помощью SQL-запроса или мне нужно использовать Python, чтобы помочь с этим (я делаю конвейер etl, в котором эта задача включена в процесс преобразования)
Спасибо