我正在创建一个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 desc”),但后来我收到了这个错误:
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
我有两个问题。这是聚合数据的好方法吗?如何订购输出?
感谢所有输入!
答案 0 :(得分:1)
您应该按date(created_at)