Hive 的 窗口函数介绍

窗口函数

一 窗口函数有什么用?
在日常工作中,经常会遇到需要在每组内排名,比如下面的业务需求:

排名问题:每个部门按业绩来排名
topN问题:找出每个部门排名前N的员工进行奖励

面对这类需求,就需要使用sql的高级功能窗口函数了。

二 什么是窗口函数 ?

窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。

窗口函数的基本语法如下:

select
count(1) over(partition by name)  , 
from
tb_orders ;

在进行分组聚合以后 , 我们还想操作集合以前的数据 就可以使用到窗口函数

三 相关的一些函数说明

1)OVER(): 指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化

2)CURRENT ROW:当前行 current row

3)n PRECEDING:往前n行数据 n preceding

4)n FOLLOWING:往后n行数据 n following

5)UNBOUNDED PRECEDING 起点, 表示从前面的起点,

6)UNBOUNDED FOLLOWING 表示到后面的终点

7)LAG(col,n):往前第n行数据 lag 参数一 字段 n

8)LEAD(col,n):往后第n行数据 lead

9)NTILE(n):把有序分区中的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。注意:n必须为int类型。 ntile(5)

四 习题练习

jack,2020-01-01,10
tony,2020-01-02,15
jack,2020-02-03,23
tony,2020-01-04,29
jack,2020-01-05,46
jack,2020-04-06,42
tony,2020-01-07,50
jack,2020-01-08,55
mart,2020-04-08,62
mart,2020-04-09,68
neil,2020-05-10,12<

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值