我有三张table:
第一张table:(购买)
date (mm-dd) quantity p_id
05-05 3 1
05-06 2 1
第二张表:(销售)
date (mm-dd) quantity p_id
05-07 1 1
第三个表:(过期)
date (mm-dd) quantity p_id
05-08 4 1
现在我想要的是获得过期产品的详细信息,如:
购买过期产品的时间(fifo)
先购买的产品将首先过期/销售。
输出应为:
purchase_date expired_date quantity p_id
05-05 05-08 2 1
05-06 05-08 2 1
解释,
商店总共有 5
产品 05-06
与 p_id
: 1
,
接着
05-07 1
售出数量 p_id
: 1
i、 e.收到的产品 05-05
先按先进先出法销售
所以现在我们的产品是:(仅用于可视化)
date (mm-dd) quantity p_id
05-05 2 1 -its 1 quantity is sold
05-06 2 1
则到期日为 05-08
,过期产品为:(byfifo)
purchase_date expired_date quantity p_id
05-05 05-08 2 1
05-06 05-08 2 1
即。 2
的产品 05-05
已经过期并且 2
的 05-06
我现在要实现的逻辑是:
所有附加事务:
date (mm-dd) quantity p_id expired
05-05 3 1 False
05-06 2 1 False
05-07 -1 1 False
05-08 -4 1 True
附加所有事务如下:(如上所示)
设置数量 sell
以及 expiry
是阴性,是阴性 expired
变量, True
仅当其到期交易
算法:(使用deque push pop概念,到期时记录)
每组 p_id
交易:
初始化 deque
(空)
对于每个事务(所有附加事务)
如果数量为正,则推入deque
要不然,爸爸,
如果没有弹出跳过(因为卖出可以多于买入)
否则,如果过期为假,即是卖出交易,
直到卖出价和卖出价之差大于等于零
否则,这是一个浪费条目
弹出,直到差异大于等于零,也记录每个弹出的差异
- 当差异大于或等于零表示买入数量大于卖出数量时,我停止,因为卖出数量为负数,请考虑:
bought = 2
sold = -4
diff = 2-4 = -2
therefore we need to loop for next purchase until diff >= 0
实际上,目前我正在做的是从我的 RDBMS
变成Pandas dataframe
然后应用一些东西,很明显这是不可维护的,我想在数据库内部做它,因为数据库是优化的,我想做一个复杂的
MySQL query
那确实有点 sub-queries
给我想要的结果。
当销售是,我有不同的东西在进行,所以我想最低负荷的时间。
基本上发生的是:
一个商店购买产品,购买条目,
一家商店销售产品,销售条目,
商店告知此产品已过期,则会输入过期条目
- 他们之间没有关系。
我也在用 Django Querysets
,以获取数据,所以如果我可以使用,这将是很大的帮助!
我也愿意做出改变或使用完全不同的工具来实现这些目标。
暂无答案!
目前还没有任何答案,快来回答吧!