2013-01-03 1 views
1

지난 10 년간의 시간별 가격 데이터가 포함 된 PostgreSQL 데이터베이스가있는 레일 응용 프로그램이 있으며 새 DB 테이블에 저장되는 매일 평균 가격을 얻어야합니다. 이 쿼리는 하루 그룹 기록을 매일에 대한 평균 가격 반환 쿼리에서 새 개체 저장

{"2013-01-03 00:00:00"=>#<BigDecimal:7fcc7c2e4a28,'0.1752888888 88888889E2',27(27)>, "2013-01-02 00:00:00"=>#<BigDecimal:7fcc7c2e4848,'0.2547086956 52173913E2',27(27)>} 

사람이 어떻게 제안 할 수

:

averages = Sale.average(:price, :group => "DATE_TRUNC('day', date)") 

레일즈 콘솔 응답이 같은 (데이터 2 일의 샘플을) 모양을 이 반환 된 날짜 및 평균 가격을 DailyAverage라는 새 Object에 저장하는 코드를 작성 하시겠습니까?

{ 
    'date' => BigDecimal, 
    'date2' => BigDecimal, 
    'date2' => BigDecimal, 
} 

그래서이 같은 각 날짜에 대한 각각의 평균에 액세스 할 수 있습니다 :

+0

당신은 무엇을 시도? 이 작업을 수행하는 구체적인 부분은 수행 방법을 이해하지 못합니까? –

답변

2

귀하의 응답은 같다

averages = Sale.average(:price, :group => "DATE_TRUNC('day', date)") 

averages.each do |date, avg| 
    DailyAverage.create(date: date, average: avg.to_f) 
end 

이 코드는 당신이 dateaverage 속성을 가진 DailyAverage 모델이 가정합니다.

당신은 각 루프에 to_date를 사용 할 수 있습니다 :

averages.each do |date, avg| 
    DailyAverage.create(date: date.to_date, average: avg.to_f) 
end