0
votes

Calculer la moyenne par ligne, puis calculez la moyenne par colonne

J'ai une table indiquée ci-dessous xxx

Je veux d'abord calculer la moyenne de la ligne, puis calculer la moyenne finale de la colonne

donc mon calcul devient donc mon calcul xxx

et j'arrive ensuite à la moyenne finale de Row1avg, Row2avg, Row3avg = 65.22

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.


6 commentaires

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 . 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 () ?


Pouvez-vous s'il vous plaît me montrer comment.


3 Réponses :


0
votes

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.


0 commentaires

1
votes

J'utiliserais croix Appliquer et regrouper les ensembles : xxx

Le ci-dessus suppose que vous avez un identifiant unique pour identifier chaque ligne . Sinon, alors vous avez besoin de quelque chose comme Union tout : xxx


1 commentaires

Merci beaucoup Gordon..did pas eu une carte d'identité unique, alors votre deuxième approche semble fonctionner.



1
votes

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


0 commentaires