我想知道是否可以对计数进行累积和。我想举的一个例子是今年影响美国的风暴。我想要一个列出 2014 年月份的结果集,以及该月之前影响美国的风暴累计总数。我希望得到 3 列的内容 - Month、NumberofStorms 和 CumulativeSum,如下所示:
Month NumberofStorms CumulativeSum
-----------------------------------------------
Jan 2 2
Feb 1 3
Mar 1 4
Apr 0 4
May 0 4
Jun 0 4
Jul 0 4
Aug 0 4
Sep 1 5
Oct 3 8
Nov 5 13
Dec 8 21
我怎样才能实现这个目标?
您可以将窗口添加到SUM()
:
SELECT "Month"
,"NumberofStorms"
,SUM("NumberofStorms") OVER(ORDER BY "Month" ROWS BETWEEN unbounded preceding and current row) AS CumulativeSum
FROM Table1
Demo: SQL小提琴 http://sqlfiddle.com/#!4/98f83/5/0
注意:演示中月份按字母顺序排序,没有费心输入实际日期,因为这只是一个示例场景。
更新:让我们假设基表只是Month
And StormName
,您需要一个 cte/子查询来首先获取一个计数,然后您可以在上面的运行总计中使用该计数:
SELECT "Month"
,"NumberofStorms"
,SUM("NumberofStorms") OVER(ORDER BY "Month" ROWS BETWEEN unbounded preceding and current row) AS CumulativeSum
FROM (SELECT "Month",COUNT("Name") AS "NumberofStorms"
FROM Weather
GROUP BY "Month"
) AS Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)