我有一个整数数组,我想计算相邻元素之间的差异并返回差异数组。
SELECT ARRAY[3, 2, 5, 1, 2] AS my_arr -- original array
-- my_arr |
-- ---------------------+
-- {'3','2','5','1','2'}|
所需输出
-- my_arr |arr_of_diffs |
-- ---------------------+-------------------+
-- {'3','2','5','1','2'}|{'-1','3','-4','1'}|
有没有一种直接的方法可以使用 trino 的数组函数从
arr_of_diffs
计算 my_arr
?
Trino 没有内置函数,因此您必须使用变换并使用数组索引手动计算差异:
WITH data AS (
SELECT ARRAY[3, 2, 5, 1, 2] AS my_arr
)
SELECT
my_arr,
transform(
SEQUENCE(2, cardinality(my_arr)), -- generates indices from 2 to the length of the array
i -> element_at(my_arr, i) - element_at(my_arr, i - 1)
) AS arr_of_diffs
FROM data;