【问题标题】:Sum of specific values when specific key are equivalent in Ruby当特定键在 Ruby 中等效时特定值的总和
【发布时间】:2015-02-27 13:03:57
【问题描述】:

这是我的问题,我正在使用 Ruby On Rails 开发一个 Web 应用程序,但我被困在一个特定的查询上

我有一个表purchase_item,其中包含:user_iditem_idamounttotal, ...

user_id AND item_id 相同时,我想要金额和总数的总和。

所以这里:

@purchase_items = PurchaseItem.all
@purchase_items = ?

【问题讨论】:

  • 您是否尝试过任何查询?
  • 我尝试了一些选择,合并...但每次我都遇到错误
  • 然后发布您的查询
  • 你会传递user_id和item_id吗?
  • 不,它在桌子里面

标签: mysql sql ruby-on-rails ruby


【解决方案1】:

试试这样:--

amount = PurchaseItem.where("user_id = ? and item_id = ?", user_id,item_id).sum("amount")
total = PurchaseItem.where("user_id = ? and item_id = ?", user_id,item_id).sum("total")

【讨论】:

    【解决方案2】:

    试试下面的查询:

    PurchaseItem.select("SUM(purchase_items.amount) AS total_amount, SUM(purchase_items.total) AS total_value").where("user_id = ? AND item_id =?", user_id, item_id ).group(:user_id)
    

    这可能对你有用。

    【讨论】:

    • 这看起来像我尝试过的,但我不能使用 where 子句,因为 user_id 和 item_id 在表 purchase_item 内。只有当 purchase_item 1 的 user_id 和 item_id 与 purchase_item 2 相同时,行才需要求和,....
    • 为此,您可以按两列分组PurchaseItem.group([:user_id, :item_id]).select("SUM(purchase_items.amount) AS total_amount, SUM(purchase_items.total) AS total_value")PurchaseItem.group([:user_id, :item_id]).sum(:amount, :total)
    • 仍然无法正常工作,我尝试了另一种方法。现在我有: [{"item"=>31, "amount"=>1, "total"=>#<7fe0eafe6a50><7fe0f1c98748>
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 2020-03-21
    • 2022-01-23
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多