J'ai une table indiquée ci-dessous Je veux d'abord calculer la moyenne de la ligne, puis calculer la moyenne finale de la colonne P> donc mon calcul devient donc mon calcul p> et j'arrive ensuite à la moyenne finale de peut-être Comment y parvenir de manière efficace. Comment je pensais faire, c'est que j'ai une table Temp avec une seule colonne où je stocke la moyenne des rangées, puis je prends simplement la moyenne de la colonne Table Table. Se demandait simplement s'il pourrait y avoir une meilleure façon de le faire. P> p> Row1avg, Row2avg, Row3avg = 65.22 Code> P>
3 Réponses :
Vous avez donc besoin de moyenne pour chaque ligne et chaque colonne? Je ferais deux calculs distincts, un pour la rangée et une autre pour la colonne. Lisez à travers la table et trouvez la moyenne de chaque ligne, stockez les valeurs de colonne dans les tables ou listes de colonne Temp. p>
J'utiliserais Le ci-dessus suppose que vous avez un identifiant unique pour identifier chaque ligne . Sinon, alors vous avez besoin de quelque chose comme croix Appliquer code> et
regrouper les ensembles code>:
Union tout code>: p>
Merci beaucoup Gordon..did pas eu une carte d'identité unique, alors votre deuxième approche semble fonctionner.
Essayez avec Cross Appliquer
SELECT AVG(t2.Average) FROM Table t1 CROSS APPLY ( SELECT Average = AVG(Value) FROM (VALUES (Col1), (Col2), (Col3), (Col4)) B1(Value) ) t2
Donc, si la colonne est null, vous ne voulez pas l'ajouter au calcul moyen?
Ouais je ne veux pas ça.
Je pense que votre calcul est faux pour
Row3avg code>. Ce n'est pas la moyenne, mais la somme.
Désolé mis à jour le message.
Vous ne pouvez pas simplement pivoter la table, puis utiliser la fonction
avg () code>?
Pouvez-vous s'il vous plaît me montrer comment.