分享好友 最新动态首页 最新动态分类 切换频道
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 : 取分组内排序后,截止到当前行,最后一个值

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

 
 
 
 

 


最新文章
谷歌浏览器(Google Chrome) v131.0.6778.140 64位 离线官方正式版
谷歌浏览器(Google Chrome)将简约的界面设计与先进的技术相融合,让网络浏览变得更快速安全而且简便。谷歌浏览器是一款可让您更快速、轻松且安全地使用网络的浏览器,它的设计超级简洁,使用起来更加方便。v109 开始是支持 Win7/8的最后一
一周外盘头条
​​联合健康保险CEO遭枪杀,26岁的嫌疑人落网,美国社交媒体上反常的欢呼声也表明医保行业的拒保以及高管高薪都已引发众怒。  刚刚获评《时代》年度人物的美国当选总统特朗普现身纽交所敲响开盘钟,并放话“股市就是一切”,还称要在加
三、使用公式统计单元格排序:
在Excel中对总分进行排序的方法如下:1、首先在Excel中打开要排序的数据表,然后在数据表中选择要排序的内容,或者直接点击“数据”→“排序”;2、在弹出的排序对话框中,将“按”的设置改为“总分”,并且选择自己希望的排序方式,大到小
小米手机解锁bl锁肿么要708小时
小米手机解锁BL锁的步骤如下:1. 打开手机设置,进入“系统更新”。2. 在“关于手机”中找到“MIUI版本号”,连续点击7次。3. 返回上一级菜单,进入“双筒”功能。4. 在“双筒”中找到“高级设置”,打开“开发者选项”。5. 进入“开发者选
很黄很有趣的网站被迫关停:盘点那些藏污纳垢的资源下载站
在互联网的世界里,有许多网站提供各种各样的资源下载服务。其中也有一些网站因为涉及色情、盗版等违法内容而被关停。今天,我们就来盘点一下那些曾经藏污纳垢的资源下载站。这些网站的危害1. 某成人视频网站该网站是一个提供成人视频资源
学生表 班级表 mysql
5.12 添加四张表student :sid sname sbirth sexsscore :sid cid scorecourse :cid cname tidteacher :tid tname用excel的randbetween函数造了四张csv文件,导入navicat:编码—10008 (MAC - Simplified Chinese GB 2312)百度选择此码没
北京市劳动人民文化宫南门门殿修缮工程施工项目公开招标公告
北京市劳动人民文化宫南门门殿修缮工程施工项目 招标项目的潜在投标人应在北京国际招标有限公司(北京市海淀区北三环中路31号院凯奇大厦B座9层906室)获取招标文件,并于2025年01月03日 09点30分(北京时间)前递交投标文件。一、项目基本
百度信息流账户搭建工具-如何搭建优质信息流账户
您还在百度为信息流账户搭建烦恼吗?不知道如何定向人群?不知道怎么写创意?现在不用再烦恼,解救优化师–云图账户搭建工具全流量一、云图信息流账户搭建工具介绍:1.云图信息流账户搭建工具功能:云图-账户搭建旨在提高中小客户账户
竞价推广,高效获取潜在客户
竞价推广:高效获取潜在客户的秘诀随着互联网的普及,越来越多的人选择通过搜索引擎来寻找产品和服务。竞价推广作为一种高效的营销手段,能够帮助企业高效获取潜在客户。本文将为你详细介绍竞价推广的优势、方法、技巧以及注意事项,让你轻
疾控工作计划
  为了提高业务水平,不经意间,我们又将迎来新的喜悦、新的收获。通过合适的工作计划开展自己的工作,可以帮助自己在工作方面更有效率,有没有一个简单又具有深刻意义的工作计划?希望这份“疾控工作计划”能够帮助您解决问题,如果你有
相关文章
推荐文章
发表评论
0评