Как избежать округления DECIMAL при запросе SELECT SUM?
MariaDB 10.6.
Создал следующую функцию:
CREATE
FUNCTION count_sum()
RETURNS DECIMAL(19, 3)
BEGIN
DECLARE result DECIMAL DEFAULT 0.000;
SET result = (SELECT SUM(ba.amount) FROM billing_account AS ba);
RETURN result;
END;
Здесь поле billing_account.amount имеет тип DECIMAL(19, 3). Однако, в результате вызова функции я получаю округлённое целочисленное значение. Каким образом я могу избежать округления, чтобы получить точное число с долями?
Ответы (1 шт):
Дело не в sum. Если тип просто DECIMAL, то в нем не хранится дробная часть (по умолчанию хранится 0 знаков после запятой). Используйте DECIMAL(32, 4) чтоб хранить 4 знака после запятой.
При вставке нецелых чисел в колонку типа DECIMAL значение обрезается и выдается предупреждение:
Data truncated for column
Такое же обрезание происходит, если присвоить значение переменной с типом DECIMAL, как в вашем случае.