Все значения в вашем выражении являются целыми числами, поэтому фактическое деление / умножение выполняется с использованием целых чисел - что дает 0. Затем вы приводите результат (0
) в число с плавающей точкой, которое не изменить что-нибудь.
Вы должны бросить process_size
в число с плавающей точкой, затем все последующие операции выполняются с использованием числа с плавающей точкой.
select ((process_size::float*11/(1024*1024*1024))*100)/(4*3600)
Однако, если вам нужны точные результаты, вам следует держаться подальше от приблизительных типов данных, таких как float, и использовать вместо них numeric
.