【发布时间】:2016-06-14 04:28:54
【问题描述】:
我有一个关系数据库(postgres),其中包含一个包含时间序列指标的表。每行由 - obj_id, metric_id, timestamp, value
假设我有 3 个感兴趣的代码指标 - 1、4、5。我想过滤掉所有对象,对于相同的时间戳(假设所有指标的时间戳都在固定的时间间隔内),指标 1
一个更具体的例子:
obj_id metric_id timestamp value
------------------------------------------------------
1 1 83827 9
1 4 83827 2
1 5 83827 1
2 1 73261 11
2 4 73261 2
2 5 73261 5
1 1 92381 24
1 4 92381 10
1 5 92381 100
2 1 38239 7
2 4 38239 3
2 5 38239 4
预期的结果是:
obj_id timestamp
---------------------
1 83827
2 38239
我正在尝试创建一个高效的查询来做。这就是我的想法,以便为相同的时间戳获得 4 + 5 的总和,但我不确定将这些查询粘合在一起的最佳方法是什么:
SELECT obj_id, timestamp, sum(value) AS x
FROM metric
WHERE metric_id = 4 OR metric_id = 5
group by obj_id, timestamp
我不知道如何添加到这个查询指标 1(我们应该单独查询),然后通过 obj_id 和 timestamp 过滤掉结果。
我考虑过可能使用自连接,通过时间戳连接同一张表的两个内部选择。
【问题讨论】:
标签: postgresql time-series aggregate-functions