Hive中窗口函数 over()

本文主要介绍了SQL中over()窗口函数的使用。over()函数包含分区、排序、指定窗口范围三个函数,可组合使用。默认效果与order by类似,一般会加入partiton by和order by赋予其意义。还对比了over(partition by )和普通group by的区别,并介绍了over()函数的语法结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

over() 粗浅理解:一行对应一个窗口,至于这个窗口的范围是什么就要看over()函数里面对窗口范围的约束是什么了

over()函数中包括三个函数:包括分区partition by 列名、排序order by 列名、指定窗口范围rows between 开始位置 and 结束位置
我们在使用over()窗口函数时,over()函数中的这三个函数可组合使用也可以不使用。

over() 默认的效果和order by类似,即第一行窗口大小为1,第二行窗口大小为2,以此类推,但是数据只不过没有什统计意义,所以一般还是会在over()里加入partiton by和order by(分组,排序)等,为其赋予意义 如排名等。

over(partition by ) 和 普通的group by的区别
group by,只能select group by 后面的字段,和一些聚合函数 sum(),avg(),max(),min()等,而用了over(partition by),还能select 别的非partition by 字段 或者能直接“select *”,而且对于join 等有更好的支持。

over()窗口函数的语法结构

分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)

1.over() 默认此时每一行的窗口都是所有的行

select *,count(1) over() from business;

2.over(order by orderdate)
orderdate=1的窗口只有一行,orderdate=2的窗口包括orderdate=2017-01-01,orderdate=2017-01-02

select *,count(1) over(order by orderdate) from business;

3.over(partition by name)每一行根据 name来区分窗口

select *,sum(cost) over(partition by name) from business;

在这里插入图片描述

4.over(partition by name order by id) 每一行根据 name来区分窗口,再根据order by 取具体的范围

select *,sum(cost) over(partition by name order by orderdate) from business;

在这里插入图片描述

参考
https://www.cnblogs.com/erlou96/p/13590358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值