hive求一行的最大值

1. 準備數據表test2

create table test2(
a int,
b int,
c int,
d int,
e int);

 2. 準備2條數據

insert into table test2 values(5,1,3,8,6);
insert into table test2 values(6,2,5,11,9);

3. 現在要求出a,b,c,d,e 5個字段中每行的最大值和最小值。

  雖然hive中有min和max,但是那是求某列字段的最小值和最大值,在這裏行不通。接下來使用hive中的數組排序方法來求解。

  思路: 先將字段合併到數組裏面,然後使用數組排序函數。

select sort_array(array(a,b,c,d,e)) from test2;

 

這樣,第一個就是最小值,最後一個就是最大值。完整代碼如下:

select arr[0] as min_val, arr[4] as max_val 
from(
     select sort_array(array(a,b,c,d,e)) arr 
     from test2
)a;

  最終結果如下:

 

發佈了346 篇原創文章 · 獲贊 180 · 訪問量 79萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章