Oracle SQL日期的累计值

时间:2018-01-11 13:49:23

标签: sql oracle

我有一个包含3列的表:id,date和amount,但我想为每个日期(最后一列)获得累积的SUM。

enter image description here

您是否有一个简单的解决方案如何添加此列? 我正在尝试这个:

SELECT date, sum(amount) as accumulated 
FROM table group by date
WHERE max(date); 

我应该为此使用OVER()吗?

2 个答案:

答案 0 :(得分:2)

使用窗口函数来计算每天的总数:

SELECT date, 
       amount,
       sum(amount) over (partition by date) as accumulated 
FROM the_table;

但是,只有当您的日期都具有相同的时间部分时才会起作用(在Oracle中,DATE列也包含时间)。要确保忽略时间部分,请使用trunc()确保所有时间部分都规范化为00:00:00

SELECT date, 
       amount,
       sum(amount) over (partition by trunc(date)) as accumulated 
FROM the_table;

答案 1 :(得分:1)

使用此:

SELECT T.ID, T.DATE, T.AMOUNT, (SELECT SUM(S.AMOUNT) FROM TABLE S WHERE S.DATE=T.DATE) ACCUMULATED
from
table T

这将为您提供表格中的记录,其中包含该日期所有记录的总和。