首页 > 解决方案 > 聚合函数中的减法意外结果

问题描述

为什么我得到不同的金额

SELECT SUM(`amount` - `paid_amount`), SUM(`amount`) - sum(`paid_amount`) FROM `invoice`

在这两种情况下,我都希望得到相同的金额,但我没有

标签: mysql

解决方案


第一个 sum 将仅包括 amount 和paid_amount 不为 null 的行,因为-如果任一操作数为 null 则返回 null 并sum返回所有非 null 值的总和。

如果不涉及空值并且您看到两者之间存在细微差别,则您可能使用的是浮点型或双精度型列而不是十进制类型。尝试在总和中转换为小数类型。


推荐阅读