2014-02-01 3 views
0

Я создаю приложение Rails 3.2.14. В этом приложении я получил модель под названием Timereport. В модели я получил метод класса , который я использую для генерации статистики.Как заказать сгруппированный результат?

def self.stats_time_spent(params) 
data = group("date(created_at)") 
data = data.where("backend_user_id = ?", params[:backend_user_id]) 
data = data.where("created_at >= ?", params[:date_from]) 
data = data.where("created_at <= ?", params[:date_to]) 
data = data.select("date (created_at) as timecreated, sum(total_time) as timetotal") 
data 
end 

Эта функция работает, но она выводит данные случайным образом. Даты не сортируются. Я пытался добавить .order («created_at убывание»), но я получаю эту ошибку:

PG::GroupingError: ERROR: column "timereports.created_at" must appear in the GROUP BY clause or be used in an aggregate function 
LINE 1: ...user_id = '1') GROUP BY date(created_at) ORDER BY created_at... 
                  ^
: SELECT COUNT(*) AS count_all, date(created_at) AS date_created_at FROM "timereports" WHERE 

я получил два вопроса. Является ли это хорошим способом агрегирования данных и как я могу упорядочить вывод?

Благодарен за вход!

ответ

1

Вы должны сделать заказ date(created_at)

+0

Это сработало отлично. Благодаря! –

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