Hive的分析函数的使用

48 篇文章 0 订阅
48 篇文章 0 订阅

我们先准备数据库、表和数据

Hive的分析函数的使用

 

Hive的分析函数的使用

 

Hive的分析函数的使用

 

开窗分析函数相对于mysql中的聚合函数区别是:分析函数是基于某个组多个数据进行计算聚合,而聚合函数是每个组返回一行数据。

官网

Hive的分析函数的使用

 

Hive的分析函数的使用

 

Hive的分析函数的使用

 

我们先做个例子感受下:

要求: 查询部门编号为10的所有的员工,按照薪资降序排序

Mysql实现:select empno,ename,deptno,sal from emp where deptno=10 order by sal desc;

Hive的分析函数的使用

 

如果要求是:将每个部门薪资最高的那个人的薪资显示在最后一行。

select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc) as sal_max from emp;

Hive的分析函数的使用

 

Hive的分析函数的使用

 

我们看官网这个位置

Hive的分析函数的使用

 

Hive的分析函数的使用

 

我们来解释里面的概念

当前有一个数据

Hive的分析函数的使用

 

CURRENT ROW

Hive的分析函数的使用

 

UNBOUNDED PRECEDING 初始行

PRECEDING 前一行

CURRENT ROW 当前行

FOLLOWING 后一行

UNBOUNDED FOLLOWING 最后一行

Hive的分析函数的使用

 

所以上面的语句我们变动下

select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as sal_max from emp;

可以控制窗口大小

Hive的分析函数的使用

 

结果是一样的,但是窗口大小我们做了变化

Hive的分析函数的使用

 

我们准备数据

Hive的分析函数的使用

 

创建一个表

Hive的分析函数的使用

 

Hive的分析函数的使用

 

载入数据

load data local inpath '/data/hivetest/anal.txt' into table analytical;

Hive的分析函数的使用

 

语句1:

Hive的分析函数的使用

 

Hive的分析函数的使用

 

我们看结果

Hive的分析函数的使用

 

语句2

Hive的分析函数的使用

 

Hive的分析函数的使用

 

Hive的分析函数的使用

 

语句3

Hive的分析函数的使用

 

Hive的分析函数的使用

 

语句4

Hive的分析函数的使用

 

Hive的分析函数的使用

 

语句5

Hive的分析函数的使用

 

Hive的分析函数的使用

 

语句6

Hive的分析函数的使用

 

Hive的分析函数的使用

 

已上是窗口和基本语句的使用。

我们来看ROW_NUMBER

Hive的分析函数的使用

 

将每个部门薪资最高的那个人的薪资降序排序并且显示唯一的编号ROW_NUMBER

Hive的分析函数的使用

 

Hive的分析函数的使用

 

获取每个部门薪资最高的前两位(嵌套子查询)

Hive的分析函数的使用

 

Hive的分析函数的使用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值