hive sql求多個字段的最小值和最大值的辦法
阿新 • • 發佈:2019-04-25
int 技術 sql mage test 排序函數 pan 但是 lec
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;
最終結果如下:
hive sql求多個字段的最小值和最大值的辦法