rails,activerecord sum然后命令
我有一个属于用户的工作模型和用户has_many工作。 我想创建一个AR查询,计算每个用户的工作日总数,然后按降序排序。
到目前为止我有这个,但是给了我一个错误:(列“Job.id”必须出现在GROUP BY子句中或者用在聚合函数中)
@work_days = Job.group(:user).order('SUM(total_days)')
我似乎无法使用.order方法工作 – 是否有我遗漏的东西? 提前致谢!
你可以写下你的查询: –
Job.group(:user_id).select('SUM(total_days) as tot').order('tot desc')
与之前略有不同
Job.group(:user_id).order('sum_total_days DESC').sum(:total_days)
现有的答案对我没有用,我不得不稍微编辑group
方法。 如果我使用你的模型(即用户),我需要列出组方法中的每个用户属性。
即:像:
user_attrs = User.new.attributes.keys.map { |key| "users.#{key}" }.join(",") Job.group(user_attrs).order('sum_total_days DESC').sum(:total_days)
我不知道这是否真的适用于你的情况,但在这个问题上花了很多时间,我想我会分享对我有用的东西。