Hive sum over partition preceding following 累计求和

本文详细探讨了Hive中sum over partition preceding following的用法,通过不同示例解释了如何实现累计求和。重点比较了sum函数与sum over的区别,以及rows between的使用,包括未指定边界和明确边界的情况。总结了partition by与group by在处理数据时的不同特点,并举例说明了各种情况下的预期结果。

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

1 不sum,直接sum over 

有重复,不符合预期

select
    bank,
    month,
    revenue,
    sum(revenue) over(
        partition by bank --month
        order by
            bank,
            month
    ) as acc_revenue
from
    (
        select
            'b1' as bank,
            '2022-01' as month,
            1 as revenue
        union all
        select
            'b1' as bank,
            '2022-01' as month,
            5 as revenue
        union all
        select
            'b2' as bank,
            '2022-01' as month,
            2 as revenue
        union all
        select
            'b1' as bank,
            '2022-02' as month,
            3 as revenue
        union all
        select
            'b2' as bank,
            '2022-02' as mon
### 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、付费专栏及课程。

余额充值