我想每15分钟比较一次时间戳x和y之间两个属性A和B的总和,以便在这15分钟的时间范围内获得更大的值。
表
id A B timestamp
1 5 10 2016-05-16 18:00:01
2 5 10 2016-05-16 18:15:00
3 15 5 2016-05-16 18:15:01
4 15 5 2016-05-16 18:30:00
因此,与该表一起使用的查询(x=2016-05-16 18:00:01和y=2016-05-16 16:30:00(应该返回:
value timestamp
20 2016-05-16 18:00:01
30 2016-05-16 18:15:01
我认为您需要CASE和time_bucket((表达式的某种组合。
您需要的是函数greatest
。它返回两个值中较大的一个,并且您可以传递两列的聚合
SELECT
greatest(sum(a), sum(b)) as value,
time_bucket('15m', t, '1s'::interval) as t
FROM k
WHERE t >= '2016-05-16 18:00:01' AND t <= '2016-05-16 18:30:00'
GROUP BY 2;
请注意time_bucket
函数中的第三个参数。时间段默认情况下四舍五入到15米存储段的开始,您可以使用第三个参数来指定偏移量。从您的例子中,我看到您希望bucket从1偏移开始。