2011-05-23 4 views
0

У меня есть модель платежей, в которой хранится сумма платежа и сумма. Я хочу, чтобы общий платеж производился каждый месяц в течение последнего года.Получить общую статистику (сумму столбца db) модели за каждый месяц за последний год

Я начал с получения всех платежей за последние 12 месяцев. Теперь, как я могу группировать их за каждый месяц и получать общую сумму за месяц. Мне просто нужны следующие два поля в наборе результатов: «месяц и год» и «total_amount». Мне нужны эти данные для построения графика ежемесячных разумных расходов.

Я использую рельсы 3.

ответ

1

Update

Следующих возвращения запроса сгруппированных Payment объектов, так что вам нужно будет извлечь поля, нужно, что-то вроде этого:

@payments = Payment.select("SUM(amount) as total_payment, MONTH(payment_date) as month, YEAR(payment_date) as year").group("MONTH(payment_date), YEAR(payment_date)") 
@data = @payments.map {|payment| [payment.amount, payment.month, payment.year]} 

, а затем извлеките нужные значения.

+0

спасибо, что начал меня, но я не могу получить доступ к набору результатов (для второго запроса). Он возвращает [# , # , # ]. Вероятно, «select as» вызывает проблему с тем, что новые атрибуты недоступны в модели. Использованное выше значение устарело в rails 3, и я попытался восстановить запрос как: Payment.select («SUM (сумма) как total_payment, MONTH (payment_date) в качестве месяца, YEAR (payment_date) как год»). Group («MONTH (payment_date)), YEAR (payment_date) "), но все та же проблема с набором результатов. –

+0

A to_sql к вышеуказанному запросу возвратил следующий запрос sql: SELECT SUM (сумма) как total_payment, MONTH (payment_date) в качестве месяца, YEAR (payment_date) как год FROM 'payments' GROUP BY MONTH (payment_date), YEAR (payment_date) ; Запуск его напрямую дает мне правильный результат. Я считаю, что запрос ActiveRecord верен, но каким-то образом я не могу получить доступ к результатам. –

+0

Думаю, вам придется сопоставить атрибуты, необходимые для массива (см. Мое обновление). – David

Смежные вопросы