Hive(15)中使用sum() over()实现累积求和和滑动求和

本文介绍了SQL中的row_number(),rank(),dense_rank()排序函数与over()窗口函数的使用,重点讲解了如何实现数据的累积求和和滑动求和,以员工销售业绩为例,展示了具体代码和结果。

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

有任何不理解或者不懂的地方进行评论,博主看到第一时间进行解答!!!

目的:实现累积求和和滑动求和

三个常用的排序函数row_number(),rank()和dense_rank()。这三个函数需要配合开窗函数over()来实现排序功能。但over()的用法远不止于此,本文咱们来介绍如何实现累计求和和滑动求和。

样例:

一、数据介绍

三列数据,分别是员工的姓名、月份和销售额
在这里插入图片描述

功能:对每个员工的销售业绩的累积求和以及滑动求和(每个月计算其最近三个月的总销售业绩)

二、累积求和

1. 语法:

sum(需要求和的列) over(partition by 分组列 order by 排序列 asc/desc)

2. 代码:
select
	 *,
	 sum(cnt
### Hive SQL 中 SUM 窗口函数与 ORDER BY 子句 在Hive SQL中,`SUM()`窗口函数可以用于计算累积或其他形式的滚动汇总。当结合`ORDER BY`子句使用时,可以在特定顺序下对数据进行累加求和。 #### 使用 `SUM()` 窗口函数配合 `ORDER BY` 为了展示如何利用`SUM()`作为窗口函数并指定排序依据,在下面的例子中假设有一个名为`t_sales`的数据表,其中包含销售记录以及相应的日期字段: ```sql SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total FROM t_sales; ``` 此查询语句通过按时间先后排列来追踪每日销售额随时间变化而形成的累计总额[^1]。 上述SQL片段实现了基于日期升序排列下的金额累积相加功能;即对于每一天都会给出截至当天为止所有的销售收入之。 #### 处理更复杂的情况 如果希望进一步细化分析范围,则可以通过定义分区(partitioning),使得每次只针对不同类别分别做独立统计: ```sql SELECT category, -- 商品分类 sale_date, -- 销售发生的时间点 amount, -- 单笔交易额 SUM(amount) OVER ( PARTITION BY category -- 对每一类商品单独处理 ORDER BY sale_date -- 时间序列上的排序逻辑 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW -- 明确窗口边界条件 ) AS cat_running_total -- 类目内截止当前时刻的流水账面余额 FROM t_sales; ``` 这段代码不仅能够提供跨整个表格维度上连续增长的趋势图景,还允许观察者深入探究各个细分子集内部的发展态势[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个天蝎座白勺程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值