PostgreSQL 10.1 неверный вывод деления - PullRequest
0 голосов
/ 10 января 2019

Postgres дает неверный результат для деления, когда знаменатель больше, чем числитель.

select 2/4 дает 0, select 4/2 работает правильно.

Но select 2/4 должен на самом деле вернуть 0,5 но он возвращает 0 как целое число

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Postgres делает целочисленное деление на целые числа. По иронии судьбы, он не делает целочисленные средние на avg(), но это совсем другое дело.

Одним из решений является просто преобразование одного значения в numeric:

select  2/4, 2::numeric/4

Postgres добавит десятичные разряды для чисел.

0 голосов
/ 10 января 2019

Попробуйте деление с плавающей запятой, как в:

select 2.0 / 4 -- shows 0.5

Или:

select 1.0 * 2 / 4 -- shows 0.5
...