sum() over(partition by order by row between ... )

原始数据
在这里插入图片描述

SELECT NAME,
       p_date,
       cost,
       sum(cost) over() AS sample1, --所有行相加
       sum(cost) over(PARTITION BY NAME) AS sample2,--按name分组,组内所有行相加
       sum(cost) over(PARTITION BY NAME ORDER BY p_date) AS sample3,--按name分组,组内按日期累加(有相同日期也累加)
       sum(cost) over(PARTITION BY NAME ORDER BY p_date,cost) AS sample8,--按name分组,组内按顺序累加
       sum(cost) over(PARTITION BY NAME ORDER BY p_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS sample4,--和sample3一样,由起点到当前行的聚合
       sum(cost) over(PARTITION BY NAME ORDER BY p_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS sample5,--前面一行和当前行做聚合
       sum(cost) over(PARTITION BY NAME ORDER BY p_date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sample6,--前面一行和后面一行做聚合
       sum(cost) over(PARTITION BY NAME ORDER BY p_date ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS sample7 --当前行和后面所有行
FROM tmp_export.test123


注意下红框的数据,相同日期
在这里插入图片描述

### 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]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值