2016-04-05 37 views
0

我的源數據包括交易ID,日期,金額。我需要一個一週的平均每日移動平均金額和每筆交易金額。問題是,有時在特定日期沒有交易,我需要平均每筆交易,不需要每天,平均尾隨平移,而不是按周計算。在這種情況下,我不能在前面的行中使用OVER。我堆棧與它:(在PostgreSQL中移動追蹤周平均值

的數據是這樣的: https://gist.github.com/avitominoz/a252e9f1ab3b1d02aa700252839428dd

+0

請編輯您的問題,並顯示查詢你哈。五個。另外,您應該將數據結構直接放在問題中作爲文本,而不是通過圖像。 –

回答

0

有兩種方法,這樣做的一個使用generate_series()把所有的結果第二種方法是使用橫向聯接

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; 

注:此忽略值失蹤天,而不是把他們看作0如果你想爲0,然後用avg(coalesce(values, 0))