将多个字段与组相加会返回错误的金额(Rails 6.1)
Posted
技术标签:
【中文标题】将多个字段与组相加会返回错误的金额(Rails 6.1)【英文标题】:Summing multiple fields with group returns wrong amount (Rails 6.1) 【发布时间】:2021-12-20 00:00:40 【问题描述】:这是我在 Rails 应用程序中执行的查询示例
sum = Model.group(:insurance_id).sum('payment + additional_payment')
但是,与我查询单个insurances
并进行计算相比,返回的insurance_id = 1
的sum
是错误的,即
sum_1 = Model.where(insurance_id: 1).sum(:payment)
sum_2 = Model.where(insurance_id: 1).sum(:additional_payment)
sum != (sum_1 + sum_2) # by right, this should be equal?
其他相关信息:
payment
和 additional_payment
是带有 precision: 10, scale: 2
的十进制字段
payment
和 additional_payment
可以是 nil
或 0
总和之差高达千位数
非常感谢任何想法或帮助!
【问题讨论】:
【参考方案1】:找到答案了!
添加到nil
值将返回nil
,这不是我想要的。它应该将nil
值视为0。所以我只是像这样使用coalesce
:
sum = Model.group(:insurance_id).sum('coalesce(payment, 0) + coalesce(additional_payment, 0)')
这解决了对可空值求和的问题。希望这对将来的其他人有所帮助!
【讨论】:
在 SQL 领域是null
。以上是关于将多个字段与组相加会返回错误的金额(Rails 6.1)的主要内容,如果未能解决你的问题,请参考以下文章