- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须计算我的产品库存成本,因此对于每次购买后的每个产品,我必须重新计算 Weighted Average Cost .
我得到一个 View ,它在每次进/出后给我带来当前产品的库存:
document_type document_date product_id qty_out qty_in price row_num stock_balance
SI 01/01/2014 52 0 600 1037.28 1 600
SI 01/01/2014 53 0 300 1357.38 2 300
LC 03/02/2014 53 100 0 1354.16 3 200
LC 03/02/2014 53 150 0 1355.25 4 50
LC 03/02/2014 52 100 0 1035.26 5 500
LC 03/02/2014 52 200 0 1035.04 6 300
LF 03/02/2014 53 0 1040 1356.44 7 1090
LF 03/02/2014 52 0 1560 1045 8 1860
LC 04/02/2014 52 120 0 1039.08 9 1740
LC 04/02/2014 53 100 0 1358.95 10 990
LF 04/02/2014 52 0 600 1038.71 11 2340
LF 04/02/2014 53 0 1040 1363.3 12 2030
LC 05/02/2014 52 100 0 1037.78 13 2240
LF 15/03/2014 53 0 20 1365.87 14 2050
LF 15/03/2014 52 0 50 1054.19 15 2290
我想添加一个计算的 WAC
字段,如上所示:
document_type document_date product_id qty_out qty_in price row_num stock_balance WAC
SI 01/01/2014 52 0 600 1 037,28 1 600 1037,28000000000
SI 01/01/2014 53 0 300 1 357,38 2 300 1357,38000000000
LC 03/02/2014 53 100 0 1 354,16 3 200 1357,38000000000
LC 03/02/2014 53 150 0 1 355,25 4 50 1357,38000000000
LC 03/02/2014 52 100 0 1 035,26 5 500 1037,28000000000
LC 03/02/2014 52 200 0 1 035,04 6 300 1037,28000000000
LF 03/02/2014 53 0 1040 1 356,44 7 1090 1356,48311926606 --((1357,38*50)+(1040*1356,44))/(1090)
LF 03/02/2014 52 0 1560 1 045,00 8 1860 1043,75483870968 --((1037,28*300)+(1560*1045))/(1860)
LC 04/02/2014 52 120 0 1 039,08 9 1740 1043,75483870968
LC 04/02/2014 53 100 0 1 358,95 10 990 1356,48311926606
LF 04/02/2014 52 0 600 1 038,71 11 2340 1042,46129032258 --((1043,75483870968*1740)+(600*1038,71))/(2340)
LF 04/02/2014 53 0 1040 1 363,30 12 2030 1359,97000000000 --((1356,48311926606*990)+(1040*1363,3))/(2030)
LC 05/02/2014 52 100 0 1 037,78 13 2240 1042,46129032258
LF 15/03/2014 53 0 20 1 365,87 14 2050 1360,03301857239 --((1359,97551136621*2030)+(20*1365,87))/2050
LF 15/03/2014 52 0 50 1 054,19 15 2290 1042.71737568672 --((1042.46129032258*2240)+(50*1054.19))/2290
每种产品只有一种文件类型'SI'
(初始库存),与之关联的价格是初始WAC
.
这是一个SQL Fiddle样本。
如果有人可以帮助解决这个问题,我无法弄清楚。
编辑:我只是通过在小数点后显示 9 个数字来提高精度来更新计算数字。
最佳答案
您需要使用递归 CTE:
with recursive
stock_temp as (
select
*,
row_number() over(partition by product_id order by row_num) as rn
from
stock_table
)
,cte as (
select
document_type, document_date,
product_id, qty_out, qty_in, price,
row_num, stock_balance, rn,
price as wac
from
stock_temp where document_type = 'SI'
union all
select
sub.document_type, sub.document_date,
sub.product_id, sub.qty_out, sub.qty_in, sub.price,
sub.row_num, sub.stock_balance, sub.rn,
case when sub.qty_in = 0 then main.wac else
((sub.stock_balance - sub.qty_in) * main.wac + sub.qty_in * sub.price)
/ ((sub.stock_balance - sub.qty_in) + sub.qty_in) end as wac
from
cte as main
join stock_temp as sub
on (main.product_id = sub.product_id and main.rn + 1 = sub.rn)
)
select * from cte
关于sql - 计算产品库存的加权平均成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426878/
我需要更改利率列的总数。我的意思是,比率列中的总数是汇总,我需要加权平均值而不是总数。例如: 数量…………率 450000.......8.75 390000.......8 15000.......
我有一个包含林分编号、树种、高度和体积的数据框: import pandas as pd df=pd.DataFrame.from_items([('STAND_ID',[1,1,2,3,3,3]),
使用 NumPy 的加权平均值,我希望一个具有无限权重的元素支配结果,但它返回 NaN, >>> np.average([1,2], weights=[np.inf, 1]) nan 这是故意设计的吗
我经常在 Python 列表中添加/删除元组,并且对加权平均值(而不是列表本身)感兴趣。由于与其余部分相比,这部分在计算上非常昂贵,因此我想对其进行优化。跟踪加权平均值的最佳方法是什么?我可以想到两种
创建一个 lambda 函数来计算加权平均值并将其发送到字典。 wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS']) # D
我是一名优秀的程序员,十分优秀!