2009-08-19 4 views
0

사용자에게 속한 모든 호출의 평균을 얻고 있습니다. 사용자는 많은 전화기를 가질 수 있습니다. 따라서 해당 사용자에게 속한 모든 전화를 검색하고 전화 통화를 평균 처리하여 배열에 추가합니다. 이제 모든 통화를 평균화해야합니다. 이것은 다음과 같습니다.레일에 루비가있는 배열의 해시에 액세스

[{["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}] 

각 해시는 다른 전화입니다. 이들을 함께 평균화하는 최선의 방법은 무엇입니까?

답변

1

휴대 전화를 직접 가져와야하나요, 아니면 단순히 평균값을 찾으십니까?

사용자와 전화 사이에 has_many가 설정된 경우 다음을 수행 할 수 있습니다.

user.phones.average(:call_count) 

는 (물론, 당신은 거기에 실제 필드 이름을 교체해야합니다.)

이 유사한 쿼리를 생성 할 것이다 : 불행하게도 방법이 내 데이터베이스를 설정 한

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

을, 위와 같이 평균을 구해야합니다. – Ryan

+0

위의 해시 배열을 정리할 수 있습니까? 당신이 평균하려고하는 것이 정확히 무엇인지 명확하지 않습니다. – jdl

관련 문제