我有这张桌子:
Trans_ID Name Value Total_Item
100 I1 0.33333333 3
100 I2 0.33333333 3
400 I1 0.33333333 3
400 I2 0.33333333 3
800 I1 0.25 4
800 I2 0.25 4
900 I1 0.33333333 3
900 I2 0.33333333 3
1000 I1 0.2 5
1000 I2 0.2 5
我需要进入:
ITEM VALUE
I1,I2 0.28999998
价值根据所有交易/总交易中每个项目的总和计算
EX: item I1 & I2 at trans 100
(0.33333333 + 0.33333333) = 0.666666666
trans 400
(0.33333333 + 0.33333333) = 0.666666666
trans 800
(0.25+0.25) = 0.5
trans 900
(0.33333333 + 0.33333333) = 0.666666666
trans 1000
(0.2+0.2) = 0.4
So Value will be:
(0.666666666+0.666666666+0.5+0.666666666+0.4)/10= 0.28999998
*since total transaction in this table is example table 10. there's aprox 50k transaction in my real table
请注意,每个交易的Total_item值是固定的,并且没有错误(请注意,trans 100只有2个项目,我总共放3个项目)
我正在使用ms访问(但一般的sql查询很好)
答案 0 :(得分:1)
如果您的流程正确无误,那么您所使用的所有分组都不是必需的 - 如果没有分组,则值相同。那就是:
((T100_I1 + T100_I2)+(T400_I1 + T400_I2))/ 4 =(T100_I1 + T100_I2 + T400_I1 + T400_I2)/ 4 =
换句话说,要获得您想要的值,您只需要将所有值相加并除以它们的数量。
select sum(value)/count(*)
from table