У меня есть следующий код:
SELECT -701385.10 -- -701385.10
SELECT SUM(-701385.10) -- -701385.10
SELECT -701385.10/2889991754.89 -- -0.000242694498630
SELECT SUM(-701385.10)/2889991754.89 -- -0.000242
В последнем SELECT
результат усекается до 6 десятичных знаков.Я прочитал статью Precision, Scale и Length и, если моя работа не так, я не могу понять, почему происходит усечение.Тип выражения SUM(-701385.10)
должен быть DECIMAL(38,2)
- см. SUM - поэтому тип, полученный в результате деления, должен иметь:
Точность:
- p1 - s1 + s2 + max (6, s1 + p2 + 1)
- 38 - 2 + 2 + max (6, 2 + 10 + 1)
- 38 - max (6,13)
- 38 - 13
- 25
Масштаб:
- max (6, s1 + p2 + 1)
- max (6, 2 + 10 + 1)
- max (6, 13)
- 13
Так почему же десятичные разряды усекаются