2009-08-19 9 views
0

Je reçois la moyenne de tous les appels appartenant à un utilisateur. Un utilisateur peut avoir plusieurs téléphones. Donc, je recherche tous les téléphones qui appartiennent à cet utilisateur et la moyenne de ces appels téléphoniques et l'ajouter à un tableau. Maintenant, j'ai besoin de faire la moyenne de tous les appels ensemble. C'est ce qui revient:accéder à un hachage à l'intérieur d'un tableau avec ruby ​​sur rails

[{["2009-08-14", #<BigDecimal:87e1488,'0.81E2',4(8)>]=>nil, 
["2009-08-15", #<BigDecimal:87e12d0,'0.8100081168 83117E2',20(20)>]=>nil, 
["2009-08-17", #<BigDecimal:87e11a4,'0.81E2',4(8)>]=>nil, 
["2009-08-18", #<BigDecimal:87e108c,'0.8100167224 08027E2',20(20)>]=>nil, 
["2009-08-19", #<BigDecimal:87e0f74,'0.8100543478 26087E2',20(20)>]=>nil}, 
{["2009-08-14", #<BigDecimal:87dd16c,'0.81E2',4(8)>]=>nil, 
["2009-08-15", #<BigDecimal:87dd054,'0.8100081168 83117E2',20(20)>]=>nil, 
["2009-08-17", #<BigDecimal:87dcf3c,'0.81E2',4(8)>]=>nil, 
["2009-08-18", #<BigDecimal:87dcd0c,'0.8100167224 08027E2',20(20)>]=>nil, 
["2009-08-19", #<BigDecimal:87dc8fc,'0.8100543478 26087E2',20(20)>]=>nil}] 

Chaque hachage est un téléphone différent. Quelle est la meilleure façon de calculer ces moyennes ensemble?

Répondre

1

Avez-vous vraiment besoin de chercher les téléphones eux-mêmes, ou recherchez-vous simplement la valeur moyenne?

Si vous avez un: has_many configuré entre utilisateurs et téléphones, vous pouvez procéder comme suit.

user.phones.average(:call_count) 

(De toute évidence, vous devez remplacer vos noms de champ réel là-dedans.)

Cela va générer une requête semblable à ceci:

SELECT avg(`phones`.call_count) AS avg_call_count FROM `phones` WHERE (`phones`.user_id = 1) 
+0

Malheureusement, la façon dont ma base de données est mis en place, Je dois obtenir la moyenne comme je le fais ci-dessus. – Ryan

+0

Pouvez-vous nettoyer votre tableau de hachages ci-dessus? On ne sait pas exactement quelles valeurs vous essayez de faire la moyenne. – jdl

Questions connexes