2015-01-16 74 views
2

我一直在尋找類似的東西,使用PostgreSQL,但還沒有找到。每N天組

讓我們假設我有如下表:

id order  amount created_at 
2  527837 10.0  2014-12-01T... 
3  527838 50.0  2014-12-02T... 
4  527839 30.0  2014-12-02T... 
5  527840 40.0  2014-12-10T... 
6  527841 80.0  2014-12-13T... 

,我想有一個返回爲7天(即使有一天沒有訂單)每滿周的所有金額的總和的查詢:

例子:

week     total_amount 
Dec/01 - Dec/07   90.0 
Dec/08 - Dec/15   120.0 
Dec/16 - Dec/23   0.0 
//...and so on until current date 

而且,讓假設,即月有30天,二月有28天,我想星期這樣的分組:

  • 月/ 01-JAN/08
  • 月/ 09-JAN/16
  • 月/ 17-JAN/24
  • 月/ 25月/ 02(孤單上交叉個月沒有問題)
  • 月/ 03月/ 10

什麼是做到這一點的最好方法是什麼?

編輯1:

我已經找到一種方法來建立一個查詢,以產生與天我需要爲我的分組臨時表,我只是有難治分組這和我原來的加盟它表...

(SELECT TO_CHAR(generate_series, 'YYYY-MM-DD') as "day" FROM generate_series('2013-06-01 00:00'::timestamp, 
          '2015-06-01 00:00'::timestamp, '1 Day')) 

] [`S

+0

你可以創建一個sqlfiddle嗎? – Mihai

+0

當然,爲什麼不呢? http://sqlfiddle.com/#!15/45dc6/1 –

回答

2
select date_trunc('week', created_At),date_trunc('week', created_At)+ INTERVAL '6' DAY, 
    SUM(amount) 
from t 
GROUP BY date_trunc('week', created_At) 
ORDER BY MIN(created_At); 

FIDDLE

+0

Hi Mihai, 查詢中返回的這組數據不包含空天。我還需要包括這些空閒的日子,這就是爲什麼我只想在日子裏使用生成的臨時表。 –

+0

@RenatoAlves你想要他們只是視覺,因爲他們不做任何事情? – Mihai

+1

@RenatoAlves這裏是你如何生成一個間隔和JOIN在你的桌上.http://sqlfiddle.com/#!1/76c29/15 – Mihai