Ruby Postgres:两个表的总和

Ruby Postgres:两个表的总和,ruby,postgresql,Ruby,Postgresql,我有两个不相关的表,我想通过ticker对它们的值求和 例如: 订单:产品编号、价值 销售:产品标识、价值 为了确保所有内容都平衡到零,我想根据订单和销售的产品id对它们进行分组,并求和这些值 orders_hash = Order.group(:product_id).sum(:value).sort_by(&:first).to_h sales_hash = Sale.group(:product_id).sum(:value).sort_by(&:first).to_h

我有两个不相关的表,我想通过ticker对它们的值求和

例如:

  • 订单:产品编号、价值
  • 销售:产品标识、价值
  • 为了确保所有内容都平衡到零,我想根据订单和销售的产品id对它们进行分组,并求和这些值

    orders_hash = Order.group(:product_id).sum(:value).sort_by(&:first).to_h
    sales_hash  = Sale.group(:product_id).sum(:value).sort_by(&:first).to_h
    
    orders_hash == sales_hash
    
    如果上面的
    false

    orders_hash.each do |k, v|
      raise "Mismatch for product_id: #{k}" unless sales_hash[k] == v
    end
    

    我们正在做一些类似的事情,但这是由于两个数据库调用造成的吗?@AndrewCPKelley您如何看待一个DB调用在两个不相关的表上进行计算?:)即使这是可能的(在编程中没有什么是不可能的)-它很可能会相当复杂,就像你所做的那样,但我希望得到总和,而不是看它们是否相等。我在一些不相关的表的总和上看到了一些SO帖子,但我希望更清晰一些。请看:@AndrewCPKelley我不太擅长SQL,所以您应该等待更多answers@AndrewCPKelley反之亦然——如果你有小数,它应该可以工作。您可以尝试在求和时强制转换为十进制(尽管如果表中有十进制,则不会产生任何影响):
    .sum('value::decimal')
    我很乐意尝试并提供帮助,但请提供更准确的示例。根据发布的评论,这是误导性的