Sql 带日期的Oracle窗口函数

Sql 带日期的Oracle窗口函数,sql,oracle,Sql,Oracle,样本数据如下: date value 2015-09-09 1 2015-09-08 2 2015-09-07 3 2015-09-04 4 2015-09-03 5 我需要计算每个日期和前两天的总和值,因此结果应显示: 2015-09-09 6 --sum value of 2015-09-09, 2015-09-08, 2015-09-07 2015-09-08 5 --sum v

样本数据如下:

date       value  
2015-09-09      1  
2015-09-08      2  
2015-09-07      3  
2015-09-04      4  
2015-09-03      5  
我需要计算每个日期和前两天的总和值,因此结果应显示:

2015-09-09      6 --sum value of 2015-09-09, 2015-09-08, 2015-09-07  
2015-09-08      5 --sum value of 2015-09-08, 2015-09-07  
2015-09-07      3 --sum value of 2015-09-07  
2015-09-04      9 --sum value of 2015-09-04, 2015-09-03  
2015-09-03      5 --sum value of 2015-09-03  
我如何在Oracle中使用窗口函数实现它?

假设您有一个订单表,其中OrderDay作为日期字段,Quantity作为当天的订单数。现在必须按天订购,并仅用于当前日期和前两天的合计

关键是要使用
RANGE-BETWEEN
子句,该子句在包含当前和前两天的窗口上运行。以下是一个解决方案:

SELECT 
SUM(Quantity) OVER 
(ORDER BY OrderDay RANGE BETWEEN
            INTERVAL '2' DAY PRECEDING
            AND
            CURRENT ROW ) totals,
Quantity
FROM Order

由于数据稀疏,因此应使用RANGE子句:

SELECT OrderDay, 
SUM(quantity) OVER 
(ORDER BY OrderDay RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW) AS totals,
Quantity
FROM Order 
或者使用默认窗口更短的时间:

SELECT OrderDay, 
SUM(quantity) OVER 
(ORDER BY OrderDay RANGE INTERVAL '2' DAY PRECEDING) AS totals,
Quantity
FROM Order 

你能告诉我们到目前为止你做了什么吗?什么都没有。。。多次尝试都没有令人满意的结果(使用一个分析函数,使用一个窗口子句,它定义了一个基于区间的逻辑范围:非常类似的问题,你说你做了
什么都没做…
,然后继续说
多次尝试
。这意味着你确实有代码。我们不需要看到有效的代码,如果它已经有效,你就不会有问题了。我们从中受益匪浅。)rom查看您尝试了什么。您应该在帖子中包括您所做的尝试,包括错误消息和/或结果与您期望的不符的方式。不,如果您尝试执行查询,您将在[07,08,09]天内看到结果是[12,9,6],但这几天的Amis结果数据集是[3,5,6]。需要是范围而不是行,并使用逻辑前导子句