在SQL中计算四个季度内的运行总和



两个问题:

(1) 我正在查看季度银行数据,并想计算出前4个季度的净收入。对于下面的A银行,2013年第一季度至2013年第二季度的净收入总和为177(见A银行2013年第四季度的12M净收入)。

(2) 此外,我想计算一下收入的同比增长。对于以下A银行,2014年的1200万净收入(246)将比去年同期增长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

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

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

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文档中找到了它。

最新更新