我正在使用 PostgreSQL 数据库进行时间聚合的 Java 实现。
我的桌子看起来像这样
Value | Start | Stop
(int) | (Date) | (Date)
-------------------------------
1 | 2004-01-01 | 2010-01-01
4 | 2000-01-01 | 2008-01-01
因此,要可视化这些时期:
------------------------------
----------------------------------------
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
[ 4 ][ 5=4+1 ][ 1 ]
我的算法现在计算数据的时间聚合,例如 SUM():
Value | Start | Stop
-------------------------------
4 | 2000-01-01 | 2004-01-01
5 | 2004-01-01 | 2008-01-01
1 | 2008-01-01 | 2010-01-01
为了测试获得的结果,我现在想直接使用 PostgreSQL 查询数据。我知道这个问题还没有简单的方法。但是,肯定有一种方法可以获得相同的结果。应支持聚合 Count、Max、Min、Sum 和 Average。我不介意一个糟糕或缓慢的解决方案,它只需要工作。
到目前为止,我发现的一个查询应该类似地工作如下:
select count(*), ts, te
from ( checkout a normalize checkout b using() ) checkoutNorm
group by ts, te;
我的收养看起来像这样:
select count(*), start, stop
from ( myTable a normalize myTable b using() ) myTableNorm
group by start, stop;
但是,报错了ERROR: syntax error at or near "normalize" -- LINE 2: from ( ndbs_10 a normalize ndbs_10 b using() ) ndbsNorm
。
有没有人可以解决这个问题?它不必基于上述查询,只要它有效。非常感谢。