2010-12-04 8 views
0

J'ai ce tableau:requêtes SQL - SOMME des données dans la transaction (pour chaque transaction)

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 

je dois en faire:

ITEM  VALUE   
I1,I2  0.28999998  

La valeur est calculée à partir de la somme de chaque 2 article dans toutes les transactions/transaction totale

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 

Veuillez noter que la valeur Total_item est fixée pour chaque transaction et qu'il n'y a aucune erreur (Notez que le trans 100 ont seulement 2 point et je mets 3 au point au total)

Je travaille avec un accès ms (mais requête SQL générale est très bien)

Répondre

1

Si vous avez raison au sujet de votre processus, tous les le regroupement que vous utilisez n'est pas nécessaire - la valeur est la même sans le groupement. C'est:

((T100_I1 + T100_I2) + (T400_I1 + T400_I2))/4 = (T100_I1 + T100_I2 + T400_I1 + T400_I2)/4 =

En d'autres termes, pour obtenir le valeur que vous avez décrit que vous voulez, vous avez juste besoin de totaliser toutes les valeurs et diviser par leur nombre.

select sum(value)/count(*) 
from table 
+0

BONNE, j'ai raté cela, merci – Rico

+0

@Rico Glad pour aider! –

Questions connexes