Неожиданный результат с вычитанием в агрегатной функции - PullRequest
0 голосов
/ 13 июля 2020

Почему я получаю разные суммы

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

В обоих случаях я ожидаю получить одинаковые суммы, но не

1 Ответ

1 голос
/ 13 июля 2020

Первая сумма будет включать только те строки, в которых сумма и оплаченная_ сумма не равны нулю, потому что - возвращает null, если любой из операндов равен нулю, а sum возвращает сумму всех ненулевых значений.

Если здесь нет нулевых значений, и вы видите небольшую разницу между ними, вы, вероятно, используете столбцы с плавающей точкой или двойным типом вместо десятичных типов. Попробуйте преобразовать сумму в десятичный тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...