Sql 基于日期的平均价格

Sql 基于日期的平均价格,sql,oracle,Sql,Oracle,我试图计算每周平均值,并将其作为一个新的列添加到我已有的列旁边。我添加了一周开始日期和一周结束日期,因为我认为这会很有用,并且我发现如何在更熟悉的MS Excel环境中这样做 SELECT settlementdate as Trading_Interval, rrp as Trading_Interval_QLD_RRP, NEXT_DAY(TRUNC(settlementdate-7),'MONDAY')AS Week_Starting, NEXT_DAY(TRUNC(settleme

我试图计算每周平均值,并将其作为一个新的列添加到我已有的列旁边。我添加了一周开始日期和一周结束日期,因为我认为这会很有用,并且我发现如何在更熟悉的MS Excel环境中这样做

SELECT 
settlementdate as Trading_Interval,
rrp as Trading_Interval_QLD_RRP, 
NEXT_DAY(TRUNC(settlementdate-7),'MONDAY')AS Week_Starting, 
NEXT_DAY(TRUNC(settlementdate),'SUNDAY')AS Week_Ending
FROM fullauth.tradingprice
WHERE settlementdate > to_date('31/12/2019','dd/mm/yyyy') 
AND settlementdate <= to_date('01/01/2020','dd/mm/yyyy')
AND regionid = 'QLD1'
ORDER BY settlementdate DESC;
此代码返回一个包含4列的表。我想在交易间隔介于周开始日期和周结束日期之间时,找到交易间隔的平均价格,并将此周价格插入/创建为新列

谢谢

您可以使用AVG作为分析函数,如下所示:

SELECT 
settlementdate as Trading_Interval,
rrp as Trading_Interval_QLD_RRP, 
NEXT_DAY(TRUNC(settlementdate-7),'MONDAY')AS Week_Starting, 
NEXT_DAY(TRUNC(settlementdate),'SUNDAY')AS Week_Ending,
-- required changes as following
AVG(Trading_Interval_QLD_RRP) OVER (PARTITION BY TRUNC(settlementdate,'IW')) AS AVG_RRP 
FROM fullauth.tradingprice
WHERE settlementdate > to_date('31/12/2019','dd/mm/yyyy') 
AND settlementdate <= to_date('01/01/2020','dd/mm/yyyy')
AND regionid = 'QLD1'
ORDER BY settlementdate DESC;
另外,请注意TRUNCsettlementdate、'IW'和NEXT_Day TRUNCsettlementdate-7、'MONDAY'是相同的

干杯