2021-06-20

用Hive实现累计求和,求前三个月的累计销售额

一般涉及累计销售的可以通过窗口函数来实现,当然也可以用最基本的自关联实现。相比较自关联的话,窗口函数理解起来会更直观简单,下面介绍一下用窗口函数来实现累计求值。

代码片.

语法:sum() over(rows  between ... and ...) 

其实窗口函数顾名思义就是你定义一个类似于窗口一样的边界,定义一个上边界和下边界即可。
也就是说over函数中你要配合rows between … and… 来定义一个边界,between 后面接上边界,and后面接下边界。
rows between …(起始)… and …(结束)…
当然你也可以理解为
rows between …(上边界)… and …(下边界)…
下面举个简单的例子
这是4个月的销售情况

mounthmoney
150
230
360
490

假如这是4个月的销售额,现在有一个需求就是要实现,连续三个月销售额
那么你就可以
代码片.

select mounth
       ,sum(money) over(order by mounth rows between 2 preceding and current row)
	   from table_01 

很多人会有疑问,不是前三个月吗,为什么会是2而不是3。因为你这个sql的意思是当前行的前2行,求前三月也就是当前行的前两行加上当前行就是3个月。
最终的结果是:

mounthmoney
150
280
3140
4180

这里还需记住几个固定的格式,会比较经常遇到。
代码片.

rows between unbounded preceding  and current row	 从第一行到当前行(求累计到当前月的销售额)

代码片.

rows between unbounded preceding  and unbounded following    从第一行到最后一行(从第一行到最后一行,适合分组后用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值