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高级数据类型