Não tenho certeza se este é o lugar para perguntar, mas aqui vai. Estou usando um servidor Postgres e para simplificar, vou tentar mostrar um breve cenário do que preciso.
CREATE TABLE operations(id,type,item,price,amount)
AS VALUES
( 1::int, 'buy' , 'item1', 2, 10::int ),
( 2::int, 'buy' , 'item1', 3, 4::int ),
( 3::int, 'sell', 'item1', 4, 12::int )
;
Se eu passar por uma base de custo FIFO, o livro-razão ou saldos após cada pedido deve se parecer com:
id | price | amount | 1 | 2 | 10 | 2 | 2 | 10 | | 3 | 4 | 3 | 3 | 2 |
Uma coisa que tentei é ter uma tabela como operation_balances na qual para cada operação processada eu insiro o saldo correspondente. Isso funciona, no entanto, há um problema com a enorme quantidade de saldos inseridos para um grande número de operações, portanto, não é uma solução válida. Eu queria saber se é possível obter a parte do saldo de cada pedido como parte de uma consulta sql. Pode demorar um pouco para ser executado, mas economizaria muito espaço no banco de dados.
Para começar, e isso é apenas para levá-lo a algum lugar,
Aqui, nós serializamos as compras em arquivos
cumpurchased
. Isso parece simples, agora podemos explodir isso expandindocumpurchased
para as transações individuais.Você deveria estar ale para ver onde estou indo com isso...
A partir deste ponto, você precisa filtrar o -2, envolvemos a consulta novamente e colocamos essa condicional lá. Então nós apenas selecionamos a partir disso.