Postgres sql раунд до 2 десятичных знаков - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь округлить результаты суммирования до 2 десятичных знаков в Postgres SQL. Я попробовал следующее, но оно округляет их до целых чисел.

round((total_sales / total_customers)::numeric,2) as SPC,

round((total_sales / total_orders)::numeric,2) as AOV

Как можно округлить результаты до 2 десятичных знаков, пожалуйста?

С уважением, JB78

1 Ответ

0 голосов
/ 07 сентября 2018

Если предположить, что столбцы total_sales и total_customers равны integer, выражение total_sales / total_orders дает integer.

Вам нужно разыграть хотя бы одного из них до , вы можете округлить их, например: total_sales / total_orders::numeric, чтобы получить десятичный результат от деления:

round(total_sales / total_orders::numeric, 2) as SPC,
round(total_sales / total_orders::numeric, 2) as AOV

Пример:

create table data
(
   total_sales integer,
   total_customers integer, 
   total_orders integer
);

insert into data values (97, 12, 7), (5000, 20, 30);

select total_sales / total_orders as int_result,
       total_sales / total_orders::numeric as numeric_result,
       round(total_sales / total_orders::numeric, 2) as SPC,
       round(total_sales / total_orders::numeric, 2) as AOV
from data;

возвращает:

int_result | numeric_result       | spc    | aov   
-----------+----------------------+--------+-------
        13 |  13.8571428571428571 |  13.86 |  13.86
       166 | 166.6666666666666667 | 166.67 | 166.67
...