微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组中具有不同索引的元素之间的Clickhouse差异

如何解决数组中具有不同索引的元素之间的Clickhouse差异

我有一个挑战。 我们有在组数组中设置的定价范围,例如 [[1,1000],[1001,2000],[2003,5000]]

是否有可能接收 x 数组的第二个元素和 x+1 数组的第一个元素之间的差异。 在结果中,我需要类似的东西 [1,3]

或者我可以制作一个展平列表并在所有元素之间执行 arrayDifference 但随后我收到 [999,1,999,3,2997]

如何仅使用 clickhouse 函数获取奇数元素?

解决方法

试试这个查询:

SELECT
    arrs,arrayMap(index -> arrs[index][1] - arrs[index - 1][2],range(2,length(arrs) + 1)) AS result
FROM 
(
    /* test data set */
    SELECT [] AS arrs
    UNION ALL
    SELECT [[1,1000]] AS arrs
    UNION ALL
    SELECT [[1,1000],[1001,2000]] AS arrs
    UNION ALL
    SELECT [[1,2000],[2003,5000]] AS arrs
    UNION ALL    
    SELECT [[1,5000],[5008,7890]] AS arrs
)

/*
┌─arrs───────────────────────────────────────────┬─result──┐
│ []                                             │ []      │
│ [[1,1000]]                                     │ []      │
│ [[1,2000]]                         │ [1]     │
│ [[1,5000]]             │ [1,3]   │
│ [[1,7890]] │ [1,3,8] │
└────────────────────────────────────────────────┴─────────┘
*/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。