1
我有一张表格,每5分钟更新一次数据。当前时间戳与之前时间戳之间的差异
| TimeStamp | Data |
| 1 | 2 |
| 2 | 8 |
| 3 | 16 |
如何选择以这样一种方式,它并没有显示数据这一数据,但最后的时间戳之间的差别,就像这样:
| TimeStamp | Data |
| 1 | 2 |
| 2 | 6 |
| 3 | 8 |
我有一张表格,每5分钟更新一次数据。当前时间戳与之前时间戳之间的差异
| TimeStamp | Data |
| 1 | 2 |
| 2 | 8 |
| 3 | 16 |
如何选择以这样一种方式,它并没有显示数据这一数据,但最后的时间戳之间的差别,就像这样:
| TimeStamp | Data |
| 1 | 2 |
| 2 | 6 |
| 3 | 8 |
如果戈登设想的情景物化,那么你可以做这样的事情...
SELECT x.timestamp
, x.data-COALESCE(MAX(y.data),0) data
FROM my_table x
LEFT
JOIN my_table y
ON y.timestamp < x.timestamp
GROUP
BY x.timestamp;
如果时间戳没有间隙(如问题中的示例所示):
select t.timestampe,
t.data - coalesce(tprev.data, 0) as data
from table t left outer join
table tprev
on t.timestamp = tprev.timestemp + 1;
如果您有空隙,这可能无法按照您的方式工作。
有似乎是一个问题,当有差距。如果我在一段时间内收到0数据,最终会得到负数据和关闭数字。任何有关如何解决这个问题的建议? – zlack
我建议你发布一个sqlfiddle来展示问题。 – Strawberry