我一直在使用 PostgreSQL 搜索类似的东西,但还没找到。
假设我有下表:
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
另外,假设1月份有30天,2月份有28天,我希望将周数分组:
这样做的最佳方式是什么?
编辑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 :(得分:3)
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);