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]。需要是范围而不是行,并使用逻辑前导子句