我需要从HIVE中的列表中找到最大值。
例如: 如果我有价值观 列表中的[5,4,3]我需要得到5。
max(list_name)无效。 有没有解决方法。
答案 0 :(得分:1)
它可能不是最优化的,但它有点有用。
select max(arr) from ( select explode( array(4, 5, 1, 20, 45, 47, 9) ) as arr ) t
+------+--+
| _c0 |
+------+--+
| 47 |
+------+--+
答案 1 :(得分:0)
您可以看到此doc
根据您的情况,如果您有一个表名example
| id | arr |
| 1 | [1,2] |
| 2 | [3,4] |
如果要获得
的结果| id | max_arr|
| 1 | 2 |
| 2 | 4 |
尝试这个SQL
SELECT id, max(arr_val) as max_arr FROM example LATERAL VIEW explode(arr) arrtable AS arr_val group by id
只有一个问题,您的id
必须是唯一的。
答案 2 :(得分:0)
您可以对数组的最小值/最大值执行以下操作:
SELECT sort_array(arr)[0] as min_arr,
sort_array(arr)[size(arr)-1] as max_arr,
FROM example;
在我所知道的所有情况下,这都比侧视图和爆炸组更好。
但是我不明白为什么没有min_array(arr)
。