窗口函数中的滑动窗口

对与需要求最近几个月的什么,需要用到滑动窗口

语法
rows between unbounded preceding and current row

  • rows是物理窗口,即根据order by 子句排序后,取的前N行及后N行的数据计算(与当前行的值无关,只与排序后的行号相关)
  • range是逻辑窗口,是指定当前行对应值的范围取值,列数不固定,只要行值在范围内,对应列都包含在内
unbounded:无界限
preceding:从分区第一行头开始,则为 unbounded。 N为:相对当前行向前的偏移量
following :与preceding相反,到该分区结束,则为 unbounded。N为:相对当前行向后的偏移量
current row:顾名思义,当前行,偏移量为0

力扣579
现在有一个表员工表,求每个id连续三个月的salary的总和
在这里插入图片描述

1.使用rows —rows between unbounded preceding and current row

表示从当前行开始,对当前行的前两行,总计三行进行求和。

select id,month,
	 sum(salary) over(partition by id order by month rows between 2 preceding and current row) as salary
from employee

得到一张这样的表, 显然不对,因为这里要求连续三个月,七月已经没有连续

在这里插入图片描述

2.如果使用range—RANGE between UNBOUNDED PRECEDING AND CURRENT ROW
select id,month,
	 sum(salary) over(partition by id order by month range between 2 preceding and current row) as salary
from employee

在这里插入图片描述

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值