如何在时间序列数据上运行“五天之内”之类的查询?
-
25-10-2019 - |
题
我想有一种简单的方法来运行查询,例如我的时间序列数据以下查询:
“彼此七天内最典型的事件是什么?”
我可以通过使用SQL和Java程序来做到这一点,通过查看每一行并运行一个查询,该查询在七天前或更晚些时候查找所有活动,但这不是很优雅,而且性能将是可怕的。是否有另一种方法可以使用SQL或其他查询语言进行优雅的方法?
简化的表结构如下:
thetime datetime
eventid int
magnitude double
intensity double
我特别不想描述数据的内容,因为我正在寻找一般解决方案。
解决方案
您可以使用自我联接来做类似的事情。这是SQL Server的有效语法,但是当我们不知道表结构或您使用的RDBMS时,很难为您的设置进行自定义。
SELECT TOP 10
a.Event as 'First Event',
b.event as 'Second Event',
ABS(CAST((a.timefield - b.timefield) as INT)) as 'Time Apart'
FROM MYtable a
INNER JOIN Mytable B
ON a.IDField <> b.IDField
WHERE (ABS(CAST((a.timefield - b.timefield) as INT)) <= 5
不隶属于 StackOverflow