如何计算数组与原始数组的差异?

问题描述 投票:0回答:1

我有一个整数数组,我想计算相邻元素之间的差异并返回差异数组。

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

sql arrays amazon-athena presto trino
1个回答
0
投票

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;
© www.soinside.com 2019 - 2024. All rights reserved.