在SQL中计算4个四分之一周期的运行总和

时间:2015-12-10 20:01:06

标签: sql

两个问题:

(1)我正在查看季度银行数据,并希望计算过去4个季度的净收入的运行总和。对于下面的A银行,2013年第一季度到2013年第四季度的净收入总和为177(2013年第四季度A银行净收入为12M)。

(2)此外,我想计算同比收入增长。对于A银行,2014年(246)的净收入为1200万,比去年同期增长39%(2013年的净收入为1200万,为177)。

非常感谢您的帮助!

Quarter Bank Name Net Income 12M Net Income YoY Income Growth
1Q2013 A 12 NA NA

2Q2013 A 56 NA NA

3Q2013 A 34 NA NA

4Q2013 A 75 177 NA

1Q2014 A 54 219 NA

2Q2014 A 123 286 NA

3Q2014 A 46 298 NA

4Q2014 A 23 246 39

1Q2015 A 72 264 21

2Q2015 A 34 175 -39

3Q2015 A 65 194 -35

1Q2013 B 32 NA NA

2Q2013 B 46 NA NA

3Q2013 B 57 NA NA

4Q2013 B 23 158 NA

1Q2014 B 56 182 NA

2Q2014 B 73 209 NA

3Q2014 B 24 176 NA

4Q2014 B 44 197 25

1Q2015 B 72 213 17

2Q2015 B 243 383 83

3Q2015 B 41 400 127

1 个答案:

答案 0 :(得分:0)

您必须能够正确排序 Quarter 列中的值。让我们假设您有分别获得年份和季度的YEAR()和QTR()函数。

然后,要获得前四个季度的收入总额,您可以查询:

SELECT [Bank Name], Quarter,
        SUM([Net Income 12M]) OVER(PARTITION BY [Bank Name]
                                   ORDER BY YEAR(Quarter), QTR(Quarter)
                                   ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS SumInc4Q
    FROM BankIncome
    ORDER BY [Bank Name], Quarter;

SQL Server 2005及更高版本中提供了使用OVER子句跟踪聚合函数的功能,我也在ORACLE 10g文档中找到了它。