Средняя цена по датам - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь рассчитать среднее значение за неделю и добавить его в качестве нового столбца рядом с тем, что у меня уже есть. Я добавил даты начала недели и даты окончания недели, так как считал, что это будет полезно (и, как я обнаружил, делаю это в более знакомой среде 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_QLD_RRP, когда Trading_Interval попадает между датами Week_Starting и Week_Ending, и вставить / создать эту недельную цену в виде нового столбца

Спасибо!

1 Ответ

1 голос
/ 04 марта 2020

Вы можете использовать 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') одинаковы.

Приветствия !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...