hive sql求多个字段的最小值和最大值的办法

 

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;

 最终结果如下:

 

posted @   硅谷工具人  阅读(24486)  评论(0编辑  收藏  举报
编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
历史上的今天:
2018-04-25 redis的window客户端下载地址
成功之道,在于每个人生阶段都要有不同的目标,并且通过努力实现自己的目标,毕竟人生不过百年! 所有奋斗的意义在于为个人目标实现和提升家庭幸福,同时能推进社会进步和国家目标! 正如古人讲的正心诚意格物致知,修身齐家治国平天下。
点击右上角即可分享
微信分享提示