ClickHouse:如何获取元组数组的 argMax

Posted

技术标签:

【中文标题】ClickHouse:如何获取元组数组的 argMax【英文标题】:ClickHouse: How to get argMax for array of tuples 【发布时间】:2021-11-12 07:56:31 【问题描述】:

任务是获取具有最大第一项的元组。还有比以下更好的方法吗?

select arrayMax(u.a.1) first_item_max_in_array, 
    indexOf(u.a.1,first_item_max_in_array) index_in_array, 
    u.a[index_in_array].2 arg_max_second_item_first_item 
from (
    select [(1,10),(2,20),(3,30)] a
) u

【问题讨论】:

【参考方案1】:

考虑使用Array-combinator:

WITH [(1, 10), (2, 20), (3, 30)] AS arr
SELECT argMaxArray(arr.2, arr.1) AS result

/*
┌─result─┐
│     30 │
└────────┘
*/

【讨论】:

谢谢。不知何故,我错过了这个选项,而是通过类比 arraySum、arrayAvg 等名称来代替 arrayArgMax。有趣的是,存在诸如 arraySum 和 sumArray 之类的函数名称。 @unz np,我很乐意提供帮助。

以上是关于ClickHouse:如何获取元组数组的 argMax的主要内容,如果未能解决你的问题,请参考以下文章

(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?

ClickHouse 实战:ClickHouse 高级数据类型极简教程

如何从元组数组创建字典?

《ClickHouse企业级应用:入门进阶与实战》4 ClickHouse高级数据类型

客快物流大数据项目(八十九):ClickHouse的数据类型支持

clickhouse计算引擎