2010-12-04 74 views
0

我有这个表:SQL查询 - 数据的交易SUM(每笔交易)

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  

值来自于各2之和计算在所有的交易/总交易项目

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值是固定的每笔交易并没有错(注意:反式100只有2个项目,我在项目总投入3)

我和毫秒的存取工作(但一般的SQL查询是罚款)

回答

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 
+0

好一,我错过了,谢谢 – Rico 2010-12-06 00:55:44