SQL-给定数据序列,如何查询来源



让我们假设我们有以下数据。

|  UUID |       SEENTIME      |     LAST_SEENTIME    |
------------------------------------------------------
| UUID1 | 2020-11-10T05:00:00 |                      |
| UUID2 | 2020-11-10T05:01:00 |  2020-11-10T05:00:00 |
| UUID3 | 2020-11-10T05:03:00 |  2020-11-10T05:01:00 |
| UUID4 | 2020-11-10T05:04:00 |  2020-11-10T05:03:00 |
| UUID5 | 2020-11-10T05:07:00 |  2020-11-10T05:04:00 |
| UUID6 | 2020-11-10T05:08:00 |  2020-11-10T05:07:00 |

每个数据通过LAstrongEENTIME相互连接。

在这种情况下,是否有一种方法可以使用SQL将这些连接的事件标识为一个事件?我希望能够计算开始和结束来计算此事件的持续时间。

您可以使用递归CTE。确切的语法因数据库而异,但大致如下:

with recursive cte as 
select uuid as orig_uuid, uuid, seentime
from t
where last_seentime is null
union all
select cte.orig_uuid, t.uuid, t.seentime
from cte join
t
on cte.seentime = t.last_seentime
)
select orig_uuid,
max(seentime) - min(seentime) -- or whatever your database uses
from cte
group by orig_uuid;

相关内容

  • 没有找到相关文章

最新更新