在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”列是double precision类型,但表达式是
键入文本行2:…(s.percentage_value)作为双精度)作为平均值,
公制单位…
^提示:您需要重写或转换表达式。
所以我试着将avg列的精度提高一倍:
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);
但是,我也有同样的错误
平均值
正在发短信。我知道从我的查询返回的是默认文本的结果集,但我看不到任何方法将其转换为另一个数据类型以供外部insert语句使用。