Вставка PostgreSQL из оператора SQL SELECT завершается неудачно из-за текста типа выражения - PullRequest
0 голосов
/ 03 июля 2018

Я сталкиваюсь с простой ошибкой при вставке данных в новую таблицу 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.

1 Ответ

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

Попробуйте изменить точность :: double на :: float и посмотрите, работает ли это. Также я заметил, что вы не включаете имена полей в предложение Insert. Возможно, порядковый номер полей в benchmark_table не такой, как в операторе select. попробуйте использовать.

insert into benchmark_table( avg, metric_name, category)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...