Hive开窗函数、窗口帧

本文介绍了Hive中的开窗函数,包括row_number、dense_rank、rank、percent_rank、cume_dist、NTILE及聚合函数的用法,并通过实例展示了如何使用。同时,详细解释了窗口帧的概念、格式和应用场景,包括rows与range的区别。
摘要由CSDN通过智能技术生成

前言

    在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是,哟偶是我们想要既显示聚集后的数据,这时我们便引入了窗口函数。

一、什么是开窗函数

1、概念

    好像给每一份数据开一扇窗户,所以叫开窗函数

2、开窗函数都有哪些

(1)row_number 无并列排名

用法:

select xxxx,row_number() over (partition by 分组字段 order by 排序字段 desc) as rn from 需要查询的表 group by xxxx

(2)dense_rank:并列排名,并且依次递增

select *,dense_rank() over (partition by clazz order by score desc) as s from new_score;

(3)rank:有并列排名,不依次递增

select *,rank() over (partition by clazz order by score desc) as s from new_score;

(4)percent_rank: (rank的结果-1)/(分区内数据的个数-1)

select *,percent_rank() over (partition by clazz order by score desc) as s from new_score;

(5)cume_dist: 计算某个窗口或分区中某个值的累计分布

假定升序排序,则使用以下公式确定累积分布: 小于等于当前值x的行数 / 窗口或partition分区内的总行数。其中,x 等于 order by 子句中指定的列的当前行中的值。

select *,cume_dist() over (partition by clazz order by score desc) as s from new_score;

(6)NTILE(n):对分区内数据再分成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值