使用 SQL 对前行进行求和和减法

问题描述 投票:0回答:1

我有以下数据集,我正在尝试创建 SQL 来生成 FEE 列。

客户 年份 收入 费用 注释
客户A 24 财年 1 0 0
客户A 24 财年 2 0 0
客户A 24 财年 3 0 0
客户A 24 财年 4 0 0
客户A 24 财年 5 0 0
客户A 24 财年 6 0 0
客户A 24 财年 7 5000 5000 费用 = 收入 - 总和(客户和年份的费用列的所有前行)
客户A 24 财年 8 0 0
客户A 24 财年 9 7000 2000 费用 = 收入 - 总和(客户和年份的费用列的所有前行)
客户A 24 财年 10 150000 143000 费用 = 收入 - 总和(客户和年份的费用列的所有前行)
客户A 24 财年 11 0 0
客户A 24 财年 12 0 0

我尝试了窗口分析函数的组合,但是我似乎无法得到上面详细介绍的最终结果。任何人都可以帮助我使用什么 SQL 语句来计算 FEES 列吗?

谢谢你

sql sum snowflake-cloud-data-platform window-functions snowflake-schema
1个回答
0
投票

使用

case
表达式
sum()
窗口函数:

select t.*,
       case when revenue > 0
            then revenue * 2 - sum(revenue) over (partition by CUSTOMER order by YEAR, MONTH)
           else 0
       end
from tablename t
© www.soinside.com 2019 - 2024. All rights reserved.