Я сталкиваюсь с простой ошибкой при вставке данных в новую таблицу PostgreSQL. Я хотел бы использовать простой запрос, потому что эта таблица будет хранить средние значения только по разным измерениям. Я хочу, чтобы мой столбец avg
имел двойную точность. Мое заявление вставки
insert into benchmark_table
(select avg(s.percentage_value) as avg, s.metric_name, s.category
from some_table s group by s.category, s.metric_name);
Эта команда не выполняется со следующей ошибкой:
ОШИБКА: столбец "avg" имеет тип двойной точности, но выражение имеет
введите текст LINE 2: ... (s.percentage_value) с двойной точностью) как avg,
s.metric_n ...
^ СОВЕТ: Вам нужно будет переписать или привести выражение.
Поэтому я пытаюсь привести свою среднюю колонку к двойной точности:
INSERT into benchmark_table
(SELECT cast(avg(s.percentage_value) as double precision) as avg, s.metric_name, s.category
FROM some_table s group by s.category, s.metric_name);
Я также пытался
insert into benchmark_table
(Select avg(s.percentage_value)::double precision as avg, s.metric_name, s.category
from summary_view_output s group by s.category, s.metric_name);
Тем не менее, я получаю ту же ошибку о том, что avg
является текстом. Я понимаю, что то, что возвращается из моего запроса, является результирующим набором, который является текстом по умолчанию, но я не вижу никакого способа преобразовать это в другой тип данных для использования моим внешним оператором INSERT.