如何在SQL中计算运行总计

时间:2016-06-30 06:44:51

标签: sql oracle

我有给定格式的数据集 它是一个月份的数据以及每个月的工资。 我需要计算每个月结束时的累积工资。我怎么能这样做

+----------+-------+--------+---------------+
| Account  | Month | Salary | Running Total |
+----------+-------+--------+---------------+
| a        |     1 |    586 |           586 |
| a        |     2 |    928 |          1514 |
| a        |     3 |    726 |          2240 |
| a        |     4 |    538 |           538 |
| b        |     1 |    956 |          1494 |
| b        |     3 |    667 |          2161 |
| b        |     4 |    841 |          3002 |
| c        |     1 |    826 |           826 |
| c        |     2 |    558 |          1384 |
| c        |     3 |    558 |          1972 |
| c        |     4 |    735 |          2707 |
| c        |     5 |    691 |          3398 |
| d        |     1 |    670 |           670 |
| d        |     4 |    838 |          1508 |
| d        |     5 |   1000 |          2508 |
+----------+-------+--------+---------------+

我需要计算累计列的运行总列数。如何在SQL中有效地工作?

1 个答案:

答案 0 :(得分:5)

您可以在SUM子句中使用ORDER BY OVER子句:

SELECT Account, Month, Salary, 
       SUM(Salary) OVER (PARTITION BY Account ORDER BY Month) AS RunningTotal
FROM mytable
相关问题