В ролях Sum IF mysql - PullRequest
       1

В ролях Sum IF mysql

0 голосов
/ 23 октября 2018

Привет, я новичок в mysql, это мой запрос на получение суммы, но как-то не правильно рассчитать.Если что-то могло бы просветить меня, может быть, это неправильно

SUM(CAST(IF(r.sum_total_of_booking IS NULL, '0', r.sum_total_of_booking) AS DECIMAL(10,2)))

1 Ответ

0 голосов
/ 23 октября 2018

1) Пожалуйста, используйте соответствующий ЦИФРОВОЙ тип столбца для столбца sum_total_of_booking в таблице r.Если тип столбца sum_total_of_booking на самом деле числовой, просто перейдите к моей следующей точке:

2) «0» - это не число.Это строкаЗдесь вы пытаетесь суммировать все значения (приведение значения неопределенного столбца (иначе NULL) к строке '0', а затем пытаетесь преобразовать его как DECIMAL, что также вызывает внутреннюю попытку преобразования строки в число)

Вместо этого вам следует либо:

SELECT SUM(r.sum_total_of_booking) 
WHERE r.sum_total_of_booking IS NOT NULL [AND <the rest of conditions>];

, либо

SELECT SUM(IF(r.sum_total_of_booking IS NULL, 0.00, r.sum_total_of_booking))

, но это не имеет никакого смысла, поскольку a выше

В любом случаевсегда старайтесь избегать несовпадения типов данных и определений столбцов, а также избегать приведения или автоматического преобразования (молча), когда числовое значение подается в виде строки в математическое уравнение или функцию агрегирования.

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