我需要从我的数据库(postgreSQL)查询1分钟的平均值。
数据库以毫秒记录,如下所示:
timestamp | value
------------------
1528029265001 | 123
1528029265020 | 232
1528029265025 | 332
1528029265029 | 511
... | ...
1528029265176 | 231
我试过了:
SELECT
avg(value),
extract(minutes FROM to_timestamp(timestamp/1000)) as one_min
FROM table GROUP BY one_min
但它似乎停留在查询中。
我确信有一种超级简单的方法可以做到这一点。 有什么建议吗?
答案 0 :(得分:0)
我猜你想要:
SELECT floor(timestamp/(60 * 1000)) as timestamp_minute
avg(value)
FROM table
GROUP BY timestamp_minute;
但是,如果您的问题是性能问题,则会出现相同的性能问题。为此,您需要一个where
子句来限制正在处理的数据量。
由于数据没有以均匀的间隔收集,您可能需要第一个和最后一个值的简单平均值,或者类似的值。