如何在TimescaleDB中的每n分钟时间帧内获得2的较大值



我想每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偏移开始。

最新更新