作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 Active Record/Ruby on Rails 中执行此查询的最佳方式是什么
SELECT sum(amount) 作为 total_amount FROM payments GROUP BY person_id, product_id
我似乎无法将 sum
与 group
方法链接起来。我必须在这里求助于 find_by_sql
吗?
最佳答案
类似于:
Payment.group(:person_id).group(:product_id).sum(:amount)
应该给你一个散列,其键是 [person_id, product_id]
数组,其值是总和。您可能不想:
Payment.group('person_id, product_id').sum(:amount)
虽然,这可能会给您正确的总和,但哈希的键没有多大意义。
你也可以说:
Payment.sum(:amount, :group => 'person_id, product_id')
但这会像 Payment.group('person_id, product_id').sum(:amount)
那样在键中遭受相同的脑损伤;但是,:group
的数组:
Payment.sum(:amount, :group => [ :person_id, :product_id ])
应该产生与双 .group
版本相同的带有数组键的散列。但是,sum
的 :group
形式在 Rails4 中已弃用(感谢 Ganeshwara Herawan Hananda Put 注意到这一点)。
上面的代码在 Rails3 中运行良好,我认为没有理由在 Rails4 中不起作用。我手头没有 Rails4 安装程序,所以无法验证。
关于ruby-on-rails - 将聚合函数 SUM 与 GROUP BY 一起应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257223/
我是一名优秀的程序员,十分优秀!