我有3张桌子,
第一张表: (购买)
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
现在我想要的是获取过期时间为以下产品的详细信息:
输出应为:
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
,即
根据{strong> FIFO 05-05
上收到的商品
所以我们现在拥有的产品是:(仅用于可视化)
date (mm-dd) quantity p_id
05-05 2 1 -its 1 quantity is sold
05-06 2 1
然后在05-08
到期,过期的产品为:( by FIFO )
purchase_date expired_date quantity p_id
05-05 05-08 2 1
05-06 05-08 2 1
即2
的{{1}}产品已经过期,05-05
的{{1}}产品已经过期
现在我要实现的逻辑是:
所有追加的交易
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
(空)*当差异大于等于0表示购买数量多于出售数量时我停止,因为出售数量为负,请考虑:
p_id
实际上,目前我的工作方式是将所有数据从deque
加载到熊猫bought = 2
sold = -4
diff = 2-4 = -2
therefore we need to loop for next purchase until diff >= 0
中,然后应用一些东西,显然这是不可维护的,我想在数据库中完成本身是针对数据库进行了优化的,所以我想做一个复杂的RDBMS
dataframe
,做一些MySQL
才能得到期望的结果。
出售时,我会进行其他操作,因此我希望在那段时间达到最小负载。
基本上发生了什么:
*它们之间没有关系。
我还使用query
来获取数据,所以如果可以使用它,那将是很大的帮助!
我也愿意进行更改或使用完全不同的工具来实现这一目标。