假设您(在 Postgres 9.1 中)有一个像这样的表:
date | value
其中有一些差距(我的意思是:并非 min(date) 和 max(date) 之间的每个可能的日期都有它的行)。
我的问题是如何聚合这些数据,以便分别处理每个一致的组(没有间隙),如下所示:
min_date | max_date | [some aggregate of "value" column]
任何想法如何做到这一点?我相信窗口功能是可能的,但经过一段时间的尝试,lag()
我lead()
有点卡住了。
例如,如果数据是这样的:
date | value
---------------+-------
2011-10-31 | 2
2011-11-01 | 8
2011-11-02 | 10
2012-09-13 | 1
2012-09-14 | 4
2012-09-15 | 5
2012-09-16 | 20
2012-10-30 | 10
输出(sum
作为汇总)将是:
min | max | sum
-----------+------------+-------
2011-10-31 | 2011-11-02 | 20
2012-09-13 | 2012-09-16 | 30
2012-10-30 | 2012-10-30 | 10