获取一行中连续行的总和

Pav*_*ana 2 sql oracle oracle11g

我有一张桌子:

Emp_id  Emp_Name    Department     Score
123     Raju            D1          300
124     Ravi            D2          400
125     Annie           D3          600
126     Ajay            D4          200
127     Amey            D5          500
128     Akil            D6          100
Run Code Online (Sandbox Code Playgroud)

我需要输出为

  • row1 中 row1 和 row2 的分数之和
  • row2 中 row2 和 row3 的分数之和,
  • 等等

所以输出应该是:

700
1000
800
700
600
Run Code Online (Sandbox Code Playgroud)

我需要通过 SQL 查询而不是过程或其他东西的输出。

8hZ*_*WKA 5

使用从当前行到下一行的滑动窗口 ( ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) 的分析函数可以很容易地做到这一点:

SELECT Emp_id, Emp_Name, Department, Score, sum(Score)
  OVER (ORDER BY Emp_id ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) sum
FROM score;
Run Code Online (Sandbox Code Playgroud)

对数据执行此查询时,结果如下:

123 Raju    D1  300 700
124 Ravi    D2  400 1000
125 Annie   D3  600 800
126 Ajay    D4  200 700
127 Amey    D5  500 600
128 Akil    D6  100 100
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅数据库 SQL 语言参考、分析函数