mysql - 聚合函数中的减法意外结果
问题描述
为什么我得到不同的金额
SELECT SUM(`amount` - `paid_amount`), SUM(`amount`) - sum(`paid_amount`) FROM `invoice`
在这两种情况下,我都希望得到相同的金额,但我没有
解决方案
第一个 sum 将仅包括 amount 和paid_amount 不为 null 的行,因为-
如果任一操作数为 null 则返回 null 并sum
返回所有非 null 值的总和。
如果不涉及空值并且您看到两者之间存在细微差别,则您可能使用的是浮点型或双精度型列而不是十进制类型。尝试在总和中转换为小数类型。
推荐阅读
- tensorflow - tf.keras.layers.GRU 的输入问题
- swiftui - SwiftUI Picker 视图中不显示值
- android - 更新可观察排放的回收器视图适配器
- javascript - Javascript 中的对象格式
- image - ImageMagick convert -set 注释不起作用
- javafx - 如何禁用 TextArea (JavaFX) 中的文本选择?
- javascript - 饼图中的冗余数据 - Google Scripts
- asp.net-core - Chrome 中的 adpboilerplate ASP.NET Core MVC 登录循环
- java - 为什么在使用 TinkerPop 时会出现 OutOfMemoryException?
- azure - 如何通过 ARM 模板输出返回 Redis 主键?