2011-07-20 7 views
2

J'ai trois tables et ont fait des jointures pour retourner des résultats de [ID] : [number] par ligne, tout cela fonctionne bien, mais le problème est quelques lignes auront les mêmes [ID] données afin échantillons qui pourraient être retournés est:lignes de moyenne avec la même id

1 : 564 
2 : 34 
3 : 76 
2 : 985 
2 : 47 
1 : 4 

et ainsi de suite ... mais ce que je veux est de retour:

1 : 284 
2 : 355 
3 : 76 

que vous pouvez voir les lignes avec la même [ID] ont été en moyenne. Ma question est; est-il un moyen de le faire en SQL? Comment je le ferais? Merci pour votre temps.

Recherche

SELECT T1.id, T2.number 
FROM T1 
LEFT JOIN T3 ON T3.T1_id = T1.id 
LEFT JOIN T2 ON T3.T2_id = T2.id 
+1

ajoutez 'AVG ([nombre]) comme AverageNumber, GROUP BY [ID]'. Vous devriez publier votre requête entière afin que quelqu'un puisse vous donner une version fonctionnelle de la requête. – MusiGenesis

Répondre

6
SELECT ID, AVG(number) FROM table GROUP BY ID 

Average Aggregate Function

+2

vous me battre à elle. :) – Taryn

+0

Je ne sais pas pourquoi je n'ai pas pensé à ça :(Je suis sûr que je savais que je devais l'utiliser mais je pourrais le résoudre, je pense que je l'ai trop compliqué dans ma tête. culalis – Elgoog

0

Deviner, puisque vous ne l'avez pas posté votre requête:

select ID, avg(number) 
from <your query> 
group by ID; 
+1

Il veut la moyenne, pas la somme. – ean5533

1

En utilisant ce @cularis affiché et votre requête vous avez ajouté , vous utiliseriez

SELECT T1.id, Avg(T2.number) 
FROM T1 
LEFT JOIN T3 ON T3.T1_id = T1.id 
LEFT JOIN T2 ON T3.T2_id = T2.id 
GROUP BY T1.id 
Questions connexes