如何在SQL中计算运行总计

use*_*962 2 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 |
+----------+-------+--------+---------------+
Run Code Online (Sandbox Code Playgroud)

我需要计算累计列的运行总列数.如何在SQL中高效地完成工作?

Gio*_*sos 6

您可以在子句中使用SUMwith 子句:ORDER BYOVER

SELECT Account, Month, Salary, 
       SUM(Salary) OVER (PARTITION BY Account ORDER BY Month) AS RunningTotal
FROM mytable
Run Code Online (Sandbox Code Playgroud)