pb9数据窗口中显示行数据与当前行区别_Hive的窗口函数

聚合函数(如sum()、avg()、max()等等)是针对定义的行集(组)执行聚集,每组只返回一个值。

窗口函数也是针对定义的行集(组)执行聚集,可为每组返回多个值。如既要显示聚集前的数据,又要显示聚集后的数据。

窗口查询有两个步骤:将记录分割成多个分区,然后在各个分区上调用窗口函数。

语法:主要是over( PARTITION BY (根据某条件分组,形成一个小组)….ORDER BY(再组内进行排序) …. )

over:

 over (order by col1)                     --按照 col1 排序, 没分区范围就是整个表over (partition by col1)                 --按照 col1 分区 over (partition by col1 order by col2)   -- 按照 col1 分区,按照 col2 排序--带有窗口范围over (partition by col1 order by col2 ROWS 窗口范围)   -- 在窗口范围内,按照 col1 分区,按照 col2 排序

实例:

7d603eb8c3008bdfcb705ae30c3f7ce5.png

-- 按照age排序,每阶段的age数据进行统计求和

select id,age,name, count() over(order by age) from wt1;

结果:

e6e9f52c221bf29eb9b37974e9d9596c.png

-- 窗口范围是表下按照age进行分区

-- 在分区里面,再按照age进行排序

 select id,age,name, count() over(partition by age order by age) from wt1;

5f46ea82b7655f1f6120ec37e8c5e2ec.png

-- 窗口范围是表下按照age进行分区

-- 在分区里面,再按照id进行降序排序

 select id,age,name, count() over(partition by age order by age) from wt1;

序列函数

row_number:会对所有数值,输出不同的序号,序号唯一且连续,如:1、2、3、4、5。

rank:会对相同数值,输出相同的序号,而且下一个序号间断,如:1、1、3、3、5。

dense_rank:会对相同数值,输出相同的序号,但下一个序号不间断,如:1、1、2、2、3。

ROW_NUMBER()

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 

表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。

表数据:

3910b559efb9822c43b4f834e7496081.png

-- rn_id 按照性别分组,按照id排序

select id,sex,name, row_number() over(partition by sex order by id desc) from student;

64f4c0224875ddd49c94abcbc10def7e.png

--查询student表中按照sex分组,取每组的最小id的记录

select a.* from 
(select sex,age,id, row_number() over(partition by sex order by id) as rn from student) a
where a.rn = 1;

7469de5fbbfa31bf881c18793f5a1c38.png

over中partition by和distribute by区别:

1)partition by [key..] order by [key..]只能在窗口函数中使用,而distribute by [key...] sort by [key...]在窗口函数和select中都可以使用。

2)窗口函数中两者是没有区别的

3)where后面不能用partition by

Window 函数:

ROWS窗口函数中的行选择器 rows between [n|unbounded preceding]|[n|unbounded following]|[current row] and [n|unbounded preceding]|[n|unbounded following]|[current row]

参数解释:

n行数

unbounded不限行数

preceding在前N行

following在后N行

current row当前行

应用场景:

1)查询当月销售额和近三个月的销售额

2)查询当月销售额和今年年初到当月的销售额

表数据:

bb74cc3101f0e87cf93245b167334d18.png

实例:

-- 查询当月销售额和近三个月的销售额

SELECT 
y,
m,
sales,
sum(sales) OVER(PARTITION BY y ROWS between unbounded preceding and current row) AS s2
FROM sale_table;

818a4e82064dc6a6db882081b91a03d5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下shell脚本论文,Linux下Shell脚本编程

1、 shell脚本是什么它是一种脚本语言,并非编程语言。可以使用一些逻辑判断、循环等语法。可以自定义子函数,是系统命令的集合。shell脚本可以实现自动化运维,大大增加我们的工作效率。2、shell脚本结构以及执行方法开头行指定bash路径: #! /…

大数据 就业 缺口_大数据就业前景广阔,大数据人才紧缺,岗位缺口大

结果显示,绝大部分程序员年龄都不到35岁。超过一半的程序员年龄在23-30岁之间。当然程序员中间的“天才少年”的比例也不低。(三)程序员性别比例一直以来,程序员这一群体主要是男性为主。在本次调查中发现,程序员群体中男女比例超过了12:1。如…

linux硬盘磁盘标识符 0,Linux 磁盘与文件系统管理

Linux 磁盘与文件系统管理一 linux 磁盘(一)磁盘相关知识简介Linux 下用来存储数据的设备有:内存(RAM)与硬盘(Disk)两种;内存访问速度快,但价格昂贵;硬盘价格便宜,但访问速度慢目前市场上常见的磁盘有硬盘(Hard Disk,HD),软盘(Floppy Disk,FD),光盘(CompactDisk,CD),磁带(Tape)…

重构 pdf_三维温度场的重构方法,更准确地监测储能系统的电池堆内部温度

储能系统是微电网的核心组成部分,其热管理对于微电网的安全与稳定具有重要意义。相对于表面温度,电池堆内部温度场更有意义。针对红外热像仪无法监测电池堆内部温度场的问题,浙江工业大学分布式能源与微网研究所、浙江工业大学机械工程学院的…

linux 下停止监听程序,Linux下启动Oracle服务和监听程序步骤

Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下:1、安装oracle;2、创建oracle系统用户;3、/home/oracle下面的.bash_profile添加几个环境变量:ORACLE_SID,ORACLE_BASE,ORACLE_HOME:4、启动步骤:注…

2016 server sql 错误53_MS SQL Server 错误53 错误17是什么?如何解决

展开全部53是安装程序e68a8462616964757a686964616f31333335336532被挂起1、先运行你的安装程序,当提示挂起时,点击“确定”,切记,不要退出安装程序,用ALTTal键切换,点击“开始》运行”,输入“r…

linux找不到光口,以太坊查看命令_求助 输入ifconfig命令 后看不到eth0但是有eth3和eth4-CSDN论坛_区块链百科...

Ⅰ 怎么查看 /etc/sysconfig/network-scripts/ifcfg-eth0在你的这串英文前面加个 cat 空格就行Ⅱ 在linux下如何通过命令查网卡配置在linux下通过命令查网卡配置的方法如下:1、首先在电脑上打开Linux系统,然后进入Linux系统的终端窗口。Ⅲ 为什么用命令e…

开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...

随着 AI 技术的日益成熟,越来越多的传统企业都希望用 AI 能力升级原有的管理系统,进而智能化解决业务问题、提高人效。尤其在安全生产领域中,虽然视频监控的覆盖率逐年提升,但大多企业还在沿用人工抽检的方式对设备、区域、人员进…

linux vim取消显示行号,linux vim不显示行号

Vim是从vi发展而来的文本编辑器,可以用颜色或底线等方式来显示一些特殊的信息。Vim是Linux中必不可少的工具,搭建网站修改配置文件时经常用到。本教程介绍Vim的模式和常用操作。背景信息 Vim的各个模式介绍如下表所示: 模式 作用 模式转换 普…

createprocess重启程序_C++_VC程序设计中CreateProcess用法注意事项,对于windows程序设计来说,启动 - phpStudy...

VC程序设计中CreateProcess用法注意事项对于windows程序设计来说,启动一个进程有三种方法:WinExec,ShellExecute,CreateProcess。这里仅对CreateProcess的用法加以说明。对于CreateProcess的详细参数读者可以查MSDN和《Windows AP…

大学期末c语言作业演示,大学C语言期末考试练习题(带详解答案)

资源描述:一、 单项选择题1. ( A )是构成 C 语言程序的基本单位。A、函数 B、过程 C、子程序 D、子例程2.C 语言程序从 C 开始执行。A 程序中第一条可执行语句 B 程序中第一个函数C 程序中的 main 函数 D 包含文件中的第一个函数3、以下说法中…

linux服务器上svn的log_Linux服务器上搭建svn服务器

背景项目开发中需要版本控制,而我们经常使用的是在windows系统上搭建svn服务器,下面介绍在Linux系统(CentOs)上搭建svn服务器。1. 使用yum安装svn使用yum安装svn,命令如下:yum -y install subversion安装完成之后,验证…

c语言回文字符串原理,回文串(c语言)注意字符串比较和字符比较的区别

#include #include #define LEN 224void judge(char *);int main(void){char ch[LEN];gets(ch);judge(ch);return 0;}void judge(char *ch){int n,i,j;int flag0; //设定一个变化标记nstrlen(ch);char temp[n];for(i0,jn-1;itemp[j--]ch[i]; //注意&#xff1…

pla3d打印材料密度_口腔修复体制作用3D打印金属粉末的成型工艺与性能控制要点概述...

在传统口腔修复体的制作过程中,制作工艺繁琐,制作周期长,加工过程中依赖人力操作,金属材料在制作过程中易发生变形,难以控制尺寸精度,使患者舒适度下降。而采用3D打印技术生产的修复体可根据患者自身进行定…

注释代码c语言,C/C++ 源文件删除注释代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include enum {s_normal,s_string,s_string_conv,s_linecomment,s_linecomment_conv,s_comment1,s_comment,s_commented1,s_eof,};int g_state s_normal;int deal(int c) {switch(g_state) {case s_normal:{if (c \") g_st…

iphone11屏比例_iPhone 11屏幕和iPhone X哪个大 iPhone 11和iPhone X屏幕大小对比

目前关于下一代新iPhone X的消息已经疯传网络,至于该机有多么惊艳众说纷纭。近日有iPhone11跑分图流出,下面一起来看看iPhone 11屏幕和iPhone X哪个大。iPhone 11 整体介绍:渲染图中的概念iPhone 11整体的设计风格与iPhone X相似,…

c语言数组中两元素交换,如可交换两个数组中的元素?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include int main(void){int a[]{1,2,3,4,5,6,7,8};int b[]{9,10,11,12,13,15};int lena,lenb,randa,randb,randtimes;int i,temp;srand((unsigned)time(NULL));lena sizeof(a)/sizeof(int);lenb sizeof(b)/s…

c语言函数fread的调用形式,C语言的问题,fread和fgets的区别是什么?

fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放…

产品上ref和lot是什么意思_产品上的LOT是什么意思?

LOT.NO是lot number的缩写,是“批号”的意思。生产批号就是在工业生产中,虽然原料和工艺相同,但是每一批投料生产出来的产品,在质量和性能上还是有差异的。为了事后追踪这批产品的责任,避免混杂不清,所以每…

c语言 crc16 不是8的整数倍,当输入是奇数位(不是字节)时生成CRC8/16的最佳方法?C或Python...

在前面填充0不应该改变结果。计算CRC本质上是二进制长除法。不幸的是,这涉及到分割每个字节。使用移位运算符和按位or很容易实现。在结尾处的零填充要容易得多,并且取决于计算CRC的原因,这是一个完全合理的做法。例如,如果您使用C…