You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Trino数组函数计算原始数组的相邻元素差值数组?

在Trino中计算数组相邻元素的差值数组

可以直接用Trino的数组函数实现这个需求,核心思路是通过切片拆分原数组为两个错位的子数组,再用zip_with函数配对计算差值。

具体SQL实现

SELECT 
  my_arr,
  zip_with(
    slice(my_arr, 1, cardinality(my_arr) - 1),
    slice(my_arr, 2, cardinality(my_arr) - 1),
    (a, b) -> b - a
  ) AS arr_of_diffs
FROM (SELECT ARRAY[3, 2, 5, 1, 2] AS my_arr);

函数说明

  • cardinality(my_arr):返回数组的元素个数,用于确定切片的长度
  • slice(my_arr, 1, len):截取原数组从第1个元素开始的len个元素,这里取前n-1个元素(n是原数组长度)
  • slice(my_arr, 2, len):截取原数组从第2个元素开始的len个元素,得到错位的子数组
  • zip_with(arr1, arr2, func):将两个数组按位置一一配对,对每对元素执行指定的计算函数,最终生成新的结果数组

执行结果

my_arrarr_of_diffs
{3,2,5,1,2}{-1,3,-4,1}

内容的提问来源于stack exchange,提问作者Emman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:00