【发布时间】:2018-02-27 23:07:12
【问题描述】:
这个板在过去帮助了我几次。
我的挑战:我想得到一列中值之间的差异。
表格如下所示:
id | channel_id | timestamp | value
4515| 7 |1519771680000 | 7777
4518| 8 |1519772160000 | 6666
4520| 7 |1519772340000 | 8888
- id:来自数据源的内部 ID。在某些情况下,它是订购的,在其他情况下则不是。我们不能下达这个命令。
- channel_id:不同的数据源。
- 时间戳:unix 时间戳。
- 值:测量值。
我想做什么:
过滤器(例如 channel_id = 7)。 计算一个时间戳和下一个时间戳之间的差异。在这个例子中:8888-7777
我在另一个数据库上找到了解决方案,但由于 Windows 功能非常有限,我无法将其传输到 mysql。你们中有人知道如何获得可用于选择语句的解决方案吗?
谢谢和韩国 霍尔格
【问题讨论】:
-
您可以根据时间戳对特定频道的行进行过滤和排名。然后加入它本身说 table1.rank = table2.rank + 1。然后你可以得到差异。您可能需要查看如何在 mysql 上进行排名,因为该功能在这里不像在 mysql 中那样工作。
-
你能澄清
Calculate the difference between one timestamp and the next one.的意思吗?您想要一个具有匹配通道 id 的记录和另一个具有不同时间戳的记录之间的value列之间的差异,对吗? -
@clinomaniac:您好,排名和自我加入是我正在努力/试图开始工作但正在挣扎的事情。 (选择 .... (AT)rowid:=(AT)rowid+1 as rowid .. FROM ... (SELECT (AT)rowid:=0) as init, .... 但我不能在加入。
-
@Sloan Thrasher:“计算差异”:相同的通道 id、时间戳和直接前一个时间戳(下一个较低的时间戳)、值之间的差异。这就是我尝试做的。
-
@holgerabend Used_By_Already 提供的解决方案没有帮助吗?这似乎应该适用于您的情况。