postgres中对数组聚合的算术运算

pst*_*elk 4 sql arrays postgresql types aggregate-functions

我在postgres中有关于array_agg的2个问题

1)我有一个array_agg类型的列.我需要将array_agg的每个元素除以常数值.可能吗.我检查了http://www.postgresql.org/docs/9.1/static/functions-array.html,但找不到对array_agg的任何算术运算的任何引用.

编辑:所需操作的示例.

select array_agg(value)/2 from some_table
Run Code Online (Sandbox Code Playgroud)

在这里,我value从表中创建一个列的数组,some_table我必须将每个列分开4

2)是否可以在array_agg中使用coalesce.在我的场景中,可能存在这样的情况:列的array_agg可能导致NULL数组.我们可以为array_agg使用coalesce吗?

例:

select coalsece(array_agg(value1), 0)
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 6

划分可能比你想象的更简单:

SELECT array_agg(value/2)
FROM ...
Run Code Online (Sandbox Code Playgroud)

但是,究竟什么value/2依赖于数据类型.如果value为a integer,则截断小数位.要保留小数位,请value/2.0改用.小数位强制计算用numeric值完成.

COALESCE在阵列之外不会有任何区别.要么没有行,那么你根本就没有结果('没有行'),或者如果有,你得到一个数组,可能有NULL元素.但是数组本身的价值永远不会NULL.

用以下内容替换单个NULL0:

SELECT array_agg(coalesce(value/2.0, 0))
FROM ...
Run Code Online (Sandbox Code Playgroud)