我正在尝试计算每周平均值,并将其作为新列添加到已有数据的旁边。我添加了星期开始日期和星期结束日期,因为我认为这将很有用(以及如何在更熟悉的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列的表。我想找到Trading_Interval介于Week_Starting和Week_Ending日期之间时的Trading_Interval_QLD_RRP的平均价格,并将此每周价格插入/创建为新列
谢谢!
答案 0 :(得分:1)
您可以使用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;
另外,请注意TRUNC(settlementdate,'IW')
和NEXT_DAY(TRUNC(settlementdate-7),'MONDAY')
是相同的。
干杯!