Hive 的 窗口函数介绍

本文介绍了Hive窗口函数的用途,如在每组内排名、解决TopN问题,并详细解释了窗口函数的基本语法、相关函数,如OVER()、LAG()、LEAD()和NTILE()等。通过实例展示了如何利用窗口函数处理分组聚合后的数据,包括查询特定时间段的顾客购买信息、计算累计成本、获取顾客上次购买时间以及选取前20%的订单。
摘要由CSDN通过智能技术生成

窗口函数

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

排名问题:每个部门按业绩来排名
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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值