Сумма функции выпуска PostgreSQL 9.4.5 - PullRequest
0 голосов
/ 28 июня 2018

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

select extract(Month from date)||'/'|| extract(Year from date) as month_year, 
sum(value) as total
from my_sum_table
where extract(Year from date) =2018 and 
extract(Month from date) between 01 and 05 group by extract(Month from 
date),extract(Year from date) order by extract(Month from date)

И я получаю это:

enter image description here

Когда у меня есть такие значения:

enter image description here

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я проверил, что real - это small, чтобы хранить нужное мне значение, поэтому мне не хватает десятичных цифр, мне нужно изменить тип данных.

0 голосов
/ 28 июня 2018

Возможно, вы что-то упустили в своем объяснении. Я только что попробовал ваш запрос в PostgreSQL 9.4 и работает без нареканий:

create table my_sum_table (
  date date,
  value real
);

insert into my_sum_table (date, value) values ('2018-01-01', 130.59);
insert into my_sum_table (date, value) values ('2018-01-02', 256.49);
insert into my_sum_table (date, value) values ('2018-02-15', 712.57);

select extract(Month from date)||'/'|| extract(Year from date) as month_year, 
  trunc(sum(value::double precision)::numeric, 2) as total
  from my_sum_table
  where extract(Year from date) =2018 and 
    extract(Month from date) between 01 and 05 group by extract(Month from 
    date),extract(Year from date) order by extract(Month from date);

Результат:

month_year                                          total            
---------------------------------------------------------------------
1/2018                                              387.07999        
2/2018                                              712.57001        

Просто к сведению, результирующий столбец total имеет тип float4.

Кроме того, вы показываете итоговый месяц как 01/2018 вместо 1/2018. Это означает, что вы постобработка результат. Кажется, проблема в этой пост-обработке, а не в запросе PostgreSQL.

...