2016-04-05 35 views
0

'deki sonuncu haftalık ortalama taşıma kaynak veri, İşlem Kimliğini, Tarihi, Tutar'ı içerir. Günlük bazda hareket eden ve işlem başına ortalama tutarı olan bir haftalık ortalamaya ihtiyacım var. Sorun şu ki, zaman zaman belirli bir işlem yoktur ve hafta başına değil, gün başına işlem başına ortalama ve gün başına ortalama hareketleri takip etmem gerekir. Bu durumda, yukarıdaki satırlarla birlikte kullanamıyorum. Onunla yığını değilim :(PostgreSQL

Veri şuna benzer: https://gist.github.com/avitominoz/a252e9f1ab3b1d02aa700252839428dd

+0

sorunuzu düzenlemek ve sorguyu göstermek Lütfen, ha.. ettik. Ayrıca, veri yapısını bir görüntüden değil, doğrudan metin olarak sormalısınız. –

cevap

0

bunu iki yöntem vardır biri, bütün sonuçları almak için generate_series() kullanan ikinci bir yanal katılmak kullanır

...
with minmax as (
     select min(trade_date) as mintd, max(trade_date) as maxtd 
     from sales 
    ) 
select days.dte, s.values, 
     avg(values) over (order by days.dte 
         rows between 6 preceding and current row 
         ) as avg_7day 
from generate_series(mintd, maxtd, interval '1 day') days(dte) left join 
    sales s 
    on s.trade_dte = days.dte; 

Not: Bu gün eksik yerine 0 olarak onları tedavi değerlerini yok sayar 0'ı istiyorsan, o zaman avg(coalesce(values, 0)) kullanmak