이 곳곳에 이런 질문이있어서 도움이 필요한 곳을 구체적으로 설명해 드리겠습니다.조인만으로 일 이동 평균
오라클 분석 기능, MSSQL 적용 또는 다양한 방법으로 SQL에서 이동 평균을 보았습니다. 나는 또한 자기 조인 (여기서는 How do you create a Moving Average Method in SQL?과 같은 평균의 각 일에 대한 하나의 조인)을 통해 이것을 수행하는 것을 보았습니다.
SQL (바람직하게는 오라클을 선호하지만 내 질문은 혼자만 조종하는 것이므로 모든 RDBMS에서 가능해야 함)에서이 작업을 수행하는 방법이 있는지 궁금합니다. 방법은 확장 가능해야합니다 (이동 평균에서 매일에 대한 조인이 필요한 위에서 연구 한 링크와 달리 20 또는 100 일 이동 평균의 경우).
내 생각은
select customer, a.tradedate, a.shares, avg(b.shares)
from trades a, trades b
where b.tradedate between a.tradedate-20 and a.tradedate
group by customer, a.tradedate
이다하지만 과거에 그것을 시도 할 때 그것은 작동하지 않았다. 좀 더 구체적으로 말하자면,이 바이올린 데모와 함께 작지만 비슷한 예제 (20 일 대신 평균 5 일)를 시도하고 있으며, 내가 잘못 가고있는 곳을 찾을 수 없습니다. http://sqlfiddle.com/#!6/ed008/41
select a.ticker, a.dt_date, a.volume, avg(b.volume)
from yourtable a, yourtable b
where b.dt_date between a.dt_date-5 and a.dt_date
and a.ticker=b.ticker
group by a.ticker, a.dt_date, a.volume
감사합니다. 정확히 내가 무엇을 찾고 있었는지. – jfalkson