gpt4 book ai didi

sql - 基于 bool 列的条件求和

转载 作者:行者123 更新时间:2023-11-29 12:37:09 25 4
gpt4 key购买 nike

我正在使用 chartkickgroupdate构建图表:

line_chart @product.stocks.group_by_date(:date).sum(:quantity)

这工作正常,但我得到了错误的数据,因为在 stocks 表中,quantity 取决于另一列 stock_in bool 值

  • 数量不能存储为负数,只支持正数。
  • 在检索数量时,我们检查stock_in bool 值以计算产品数量的总和

示例:

product_id  |  quantity  |  stock_in  |  date

1 32 true 13-06-2015
1 8 true 13-06-2015
1 10 false 13-06-2015

这里的数量是这样计算的:32 + 8 - 10 = 30

使用时

line_chart @product.stocks.group_by_date(:date).sum(:quantity)

日期 13-06-2015 的数量总和是 40,这是错误的

我该如何解决?像这样的东西:

line_chart @product.stocks.group_by_date(:date).sum { |s| s.stock_in? ? s.quantity : -1 * s.quantity }

最佳答案

如果你想在 PostgreSQL(而不是 Rails 应用程序)中执行求和,你可以这样做:

line_chart @product.stocks
.group_by_date(:date)
.sum("quantity * (case stock_in when TRUE then 1 else -1 end)")

关于sql - 基于 bool 列的条件求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com