我需要使用 postgresql 对数组中的子数组求和。
我需要创建一个 postgresql 查询,该查询将动态执行此操作,因为每个数组的上下索引都不同。
这些索引将来自同一个表中的另外两个列。
我有以下查询将获得子数组:
SELECT
SUM(t) AS summed_index_values
FROM
(SELECT UNNEST(int_array_column[34:100]) AS t
FROM array_table
WHERE id = 1) AS t;
...但我随后意识到在使用数组切片使查询动态化时无法使用变量或 SELECT 语句:
int_array_column[SELECT array_index_lower FROM array_table WHERE id = 1; : SELECT array_index_upper FROM array_table WHERE id = 1;]
...有谁知道我如何动态地实现这个查询?
不需要子选择,只需使用列名:
SELECT SUM(t) AS summed_index_values
FROM (
SELECT UNNEST(int_array_column[tb.array_index_lower:tb.array_index_upper]) AS t
FROM array_table tb
WHERE id = 1
) AS t;
请注意,不建议在 SELECT 列表中使用设置返回函数(unnest)。最好将其放入 FROM 子句中:
SELECT sum(t.val)
FROM (
SELECT t.val
FROM array_table tb
cross join UNNEST(int_array_column[tb.array_idx_lower:array_idx_upper]) AS t(val)
WHERE id = 1
) AS t;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句