我想有一种简单的方法来运行查询,例如我的时间序列数据以下查询:

“彼此七天内最典型的事件是什么?”

我可以通过使用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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top