Вы получили ошибку «Разделить на ноль», потому что вы не обрабатывали знаменатель, равный нулю.
Решение: Добавьте nullif ,
Ну, вы сделали это НО вы также использовали «cast (... as decimal (3,2))», который дал вам ошибку «figureri c overflow», потому что вместо этого вы приводили необработанные значения (больше 9,99) к десятичному (3,2) из приведения вашего окончательного значения.
Если вы все же хотите, чтобы ваш ответ был установлен как десятичное число (3,2), вы можете сделать это. Но убедитесь, что ваш фактический ответ не превышает 9,99.
select cast(sum(colA /nullif((colA + colB),0)) over (partition by some_other_column) as decimal(3,2) ) as agg
from table;
Примечание: Ради простоты я предположил, что значение "some_other_column" одинаково для всех строк.