分享好友 最新动态首页 最新动态分类 切换频道
2023.11.16 hivesql高阶函数之开窗函数
2024-12-27 00:57

目录

2023.11.16 hivesql高阶函数之开窗函数

1.开窗函数的定义

2.数据准备

3.开窗函数之排序

 需求:用三种排序方法查询学生的语文成绩排名,并降序显示

 4.开窗函数分组

需求:按照科目来分类,使用三种排序方式来排序学生的成绩

 5.聚合函数与分组配合使用

6.聚合函数同时和分组以及排序关键字配合使用

--需求1:求出每个用户的总pv数,展示所有信息  默认第一行到最后一行

--需求2:求出每个用户截止到当天,累积的总pv数  默认第一行到当前行

做题思路,开窗函数核心:保证输出结果的记录数和输入的数据记录数一致 

7.窗口范围控制

1.默认第一行到当前行

2.第一行到当前行,等效于rows between ..不写,默认就是第一行到当前行

3.向前3行到当前行

4.向前3行 向后1行

 5.当前行到最后一行,第一行到最后一行

8.其他函数

    1.ntile平分:

注意ntile规则:尽量平均分配 ,优先满足最小(编号1)的桶,彼此最多不相差1个。

--需求:统计每个用户pv数最多的前3分之1天。--理解:将数据根据cookieid分 根据pv倒序排序 排序之后分为3个部分 取第一部分


- 窗口:可以理解为操作数据的范围,窗口有大有小,本窗口中操作的数据有多有少。

- 可以简单地解释为类似于聚合函数的计算函数,但是通过GROUP BY子句组合的常规聚合会隐藏正在聚合的各个行,最终输出一行

-而窗口函数聚合后还可以访问当中的各个行,并且可以将这些行中的某些属性添加到结果集中。

开窗函数格式:  select ... 开窗函数 over(partition by 分组字段名 order by 排序字段名 asc|desc) ... from 表名; 

-- 如果有分组操作,select后的字段要么在聚合函数内,要么在group by 后出现

-- 开窗函数: hive和mysql8都能使用

-- 开窗函数本质在表后新增了一列

-- 聚合开窗函数: max min sum avg count

数据文件score.txt

 
 
 
 
 

-- 排序开窗函数: row_number  rank  dense_rank

-- 排序函数必须配合over(order by 排序字段 asc|desc)

row_number: 巧记: 1234   特点: 唯一且连续

dense_rank: 巧记: 1223   特点: 并列且连续

rank   : 巧记: 1224   特点: 并列不连续

 
 
 

-- 开窗函数分组

-- 注意不能用group by ,需要使用partition by,可以理解成partition by是group by的子句

-- 演示排序函数和分组配合使用: 先分组再组内排序

 
 
 
 

查询每个学生的信息,按照文理科分类,以及平均分

 

 
 
 

cookie是记住用户记录的一个文件,代表一个用户

 
 

--sum(...) over( partition by... order by ... ),在每个分组内,连续累积求和

 

做题思路,开窗函数核心:保证输出结果的记录数和输入的数据记录数一致 

rows between
   - preceding:往前
   - following:往后
   - current row:当前行
   - unbounded:起点
   - unbounded preceding 表示从前面的起点  第一行
   - unbounded following:表示到后面的终点  最后一行

 
 
 
 
 
 

1+5+7=13   ,    1+5+7+3=16   ,  5+7+3+2=17  ,   7+3+2+4=16     ,   3+2+4+4=13

相当于查询今天以及前三天的总浏览量,在现实中常称为网站的'最近3天访问量'.

 
 

1+5+7+3+2=18  ,   5+7+3+2+4=21

 
 
 
 

其他开窗函数: ntile   lag和lead   first_value和last_value

ntile(x)功能: 将分组排序之后的数据分成指定的x个部分(x个桶)   
        注意ntile规则:尽量平均分配 ,优先满足最小(编号1)的桶,彼此最多不相差1个。

lag: 用于统计窗口内往上第n行值
lead:用于统计窗口内往下第n行值

first_value: 取分组内排序后,截止到当前行,第一个值
last_value : 取分组内排序后,截止到当前行,最后一个值

注意: 窗口函数结果都是单独生成一列存储对应数据

 
 
 
 

 


最新文章
拼多多店铺没有授权低价销售品牌方如何维护价格!
  拼多多店铺没有授权低价销售品牌方如何维护价格!  大家好,我是纪白。拼多多近年来凭借其独特的拼团模式,已经发展成为国内的主要电商平台之一。拼多多流量大,用户数量巨大,活跃用户数量甚至已经超过京东。这么大的流量和市场也吸
苹果手机电池怎么修复到100%
随着智能手机在日常生活中的普及,苹果手机因其卓越的性能和流畅的用户体验,受到了广大用户的喜爱。然而,随着时间的推移,许多用户发现手机的电池性能逐渐下降,续航能力不如从前。那么,苹果手机电池能否修复到100%的状态呢?本文将为您
苹果辅助键怎么设置
苹果手机的辅助功能键,也被称为辅助触控或AssistiveTouch,是一项专为有特殊需求的用户设计的功能。通过这一功能,用户可以更轻松地操作手机,提高使用效率。下面,我们就来详细讲解一下如何设置苹果手机的辅助键。首先,打开手机的“设置
淘宝关键词推广是真的吗
一、淘宝关键词推广是真的吗?淘宝关键词推广是真的。但是推广关键词需要注意,有些店铺可能只是靠一两个关键词,只要把一个产品做好了,可能就会带动全店的销量。如果过分纠结关键词,可能推广的关键词很多,但是都不成功,最终也不能带来
绝对演绎,静默无声剧本线索攻略详解
在绝对演绎游戏中,静默无声剧本的线索攻略是许多玩家关注的焦点,本文将为大家提供详细的静默无声剧本线索攻略,帮助玩家更好地理解剧情,顺利完成任务。静默无声剧本作为绝对演绎中的一项重要任务,需要玩家通过寻找线索、分析剧情来逐步
高清显示器哪个牌子好?测评戴尔SE2222H显示器怎么样?
如今,电脑作为企业办公的必备利器,在很大程度上影响了企业运营效率。对于员工来说,显示器的分辨率是很重要的,分辨率越高,画面更细腻,能展现更多的细节,工作效率自然更高。今天我就为大家推荐一款戴尔SE2222H高清显示器。我们来看下
视频重绘工具DomoAI 不用SD视频一键就能转动漫
▼用户可以通过提供简短的文本提示,例如描述一位老巫师、一个在水下游泳的女孩或释放魔法的少女,来启动的艺术生成功能。这显示了的灵活性,使用户能够根据自己的需求和创意方向快速实现他们的想法。DomoAI致力于通过其工具台加速用户的实
谷歌的搜索建议XHR请求
是一种通过XMLHttpRequest对象发送异步HTTP请求的技术。XHR代表XMLHttpRequest,是一种在后台与服务器进行数据交换的技术,可以在不重新加载整个页面的情况下更新部分网页内容。XHR请求的优势包括:XHR请求的应用场景包括:腾讯云相关产品
解锁TikTok尾部达人力量:品牌信任在海外市场的构建之路
在数字营销浪潮中,达人的影响力不断增加。相较于头部达人,尾部达人粉丝数量较少,但粉丝群体更加精准,对其内容的信任度和粘性也更高。通过真实、透明的内容创作和互动,TikTok尾部达人成为信任的“传递者”,为品牌出海奠定了坚实的基础
短剧小程序开发定制,付费追剧,广告解锁支持iaa/iap混合变现
标题:短剧小程序开发定制:全方位服务,助力您的付费追剧平台一臂之力正文:在当今移动互联网时代,短剧内容因其形式多样、节奏紧凑、易于消费而广受用户喜爱。作为一家专业的网络科技公司,南阳迈特网络科技有限公司致力于为有志于进入短
相关文章
推荐文章
发表评论
0评