ruby-on-rails-3 – 绑定的activerecords-queries使用聚合函数(s
发布时间:2020-12-17 04:00:57 所属栏目:百科 来源:网络整理
导读:鉴于此伪查询: Model.sum(:column,:condition = ['id = ?',id],order = "date DESC",:limit = X) 在这里,我们遇到的问题是,获得的总和不受值X的限制(它取总和列上的所有值而不是X(第一)条目的总和). 似乎在计算聚合函数和之后采用了限制. 我怎样才能得到仅
鉴于此伪查询:
Model.sum(:column,:condition => ['id = ?',id],order => "date DESC",:limit => X) 在这里,我们遇到的问题是,获得的总和不受值X的限制(它取总和列上的所有值而不是X(第一)条目的总和). 似乎在计算聚合函数和之后采用了限制. 我怎样才能得到仅由第一次X条目限制的金额? 解决方法
MurifoX的建议不起作用,因为LIMIT仅适用于最终结果集,后者只有一行(总和).见
this thread.
解决这个问题的最简单方法是不在数据库中进行计数: Model.where(:id => id).order('date DESC').limit(3).pluck(:column).compact.sum 这会将列的值加载到Ruby中并将其汇总.现在,如果记录集非常庞大,那么效率会显着降低,因为所有这些值都会加载到应用程序的内存中. 编辑:添加.compact – 这将在对数组进行求和之前从数组中删除nils(这会导致错误). 在SQL中执行此操作的建议方法是使用子查询,如下所示: SELECT SUM(subquery.column) FROM ( SELECT * FROM models WHERE id = 5 LIMIT 3 ) AS subquery; 将其转换为ActiveRecord查询并不是一种简单或直接的方法,因为那些人??希望从特定模型的表中进行选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |