如何在连续的时间戳范围内对数据进行分组

西恩菲尔

我有一个表,其中包含通过不确定的轮询过程收集的数据行。每行都有一个开始和结束时间戳记,表示收集数据的时间段。在某些情况下,数据是连续收集的,在这种情况下,一行的时间戳将与下一行的开始时间戳具有相同的值。在其他情况下,一行和另一行之间会有时间间隔。

例如,在下表中,行1,2,3和4都是一个时间序列数据的一部分。类似地,对于第5、6、7和8行,以及对于第9和10行,在这两者之间是我没有数据的时间段。

Row  Start_Timestamp      End_Timestamp           Data_Item
---  ---------------      --------------          ---------
1    2019-08-12_22:07:53  2019-08-12_22:09:57     100      
2    2019-08-12_22:09:57  2019-08-12_22:12:01     203      
3    2019-08-12_22:12:01  2019-08-12_22:13:03     487      
4    2019-08-12_22:13:03  2019-08-12_22:16:19     113      
5    2019-08-12_22:24:34  2019-08-12_22:26:37     632      
6    2019-08-12_22:26:37  2019-08-12_22:27:40     532      
7    2019-08-12_22:27:40  2019-08-12_22:28:42     543      
8    2019-08-12_22:28:42  2019-08-12_22:31:57     142      
9    2019-08-13_19:56:06  2019-08-13_19:57:08     351      
10   2019-08-13_19:57:08  2019-08-13_19:58:10     982      

我想将这些连续的时间序列理想地分为以下几类:

Row  Series  Start_Timestamp      End_Timestamp           Data_Item   
---  ------  ---------------      --------------          -----------  
1    1       2019-08-12_22:07:53  2019-08-12_22:09:57     100
2    1       2019-08-12_22:09:57  2019-08-12_22:12:01     203
3    1       2019-08-12_22:12:01  2019-08-12_22:13:03     487
4    1       2019-08-12_22:13:03  2019-08-12_22:16:19     113
5    2       2019-08-12_22:24:34  2019-08-12_22:26:37     632
6    2       2019-08-12_22:26:37  2019-08-12_22:27:40     532
7    2       2019-08-12_22:27:40  2019-08-12_22:28:42     543
8    2       2019-08-12_22:28:42  2019-08-12_22:31:57     142
9    3       2019-08-13_19:56:06  2019-08-13_19:57:08     351
10   3       2019-08-13_19:57:08  2019-08-13_19:58:10     982

我是SQL的新手,一直在努力解决这个问题。感谢您对如何实现此目标的任何见解或建议。

专线小巴

这是一个简化的差距与孤岛问题。假设您的RDBMS支持窗口功能,则可以使用窗口总和来实现。Start_Timestamp记录的不同于End_Timestamp先前记录的时,新的组开始:

select
    t.Row,
    sum(case when Start_Timestamp = lag_End_Timestamp then 0 else 1 end) 
        over(order by End_Timestamp) series,
    t.Start_Timestamp,
    t.End_Timestamp,
    t.Data_Item
from (
    select
        t.*,
        lag(End_Timestamp) over (order by End_Timestamp) lag_End_Timestamp
    from mytable t
) t

DB Fiddle上的演示

行| 系列| Start_Timestamp | 结束时间戳记| 数据项
-:| -----:| :------------------ | :------------------ | --------:
  1 | 1 | 2019-08-12 22:07:53 | 2019-08-12 22:09:57 | 100
  2 | 1 | 2019-08-12 22:09:57 | 2019-08-12 22:12:01 | 203
  3 | 1 | 2019-08-12 22:12:01 | 2019-08-12 22:13:03 | 487
  4 | 1 | 2019-08-12 22:13:03 | 2019-08-12 22:16:19 | 113
  5 | 2 | 2019-08-12 22:24:34 | 2019-08-12 22:26:37 | 632
  6 | 2 | 2019-08-12 22:26:37 | 2019-08-12 22:27:40 | 532
  7 | 2 | 2019-08-12 22:27:40 | 2019-08-12 22:28:42 | 543
  8 | 2 | 2019-08-12 22:28:42 | 2019-08-12 22:31:57 | 142
  9 | 3 | 2019-08-13 19:56:06 | 2019-08-13 19:57:08 | 351
 10 | 3 | 2019-08-13 19:57:08 | 2019-08-13 19:58:10 | 982

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在时间范围内对数据进行分组

来自分类Dev

在时间范围内对数据进行分组

来自分类Dev

如何在不连续范围内跳过分组时对记录进行分组?

来自分类Dev

如何在列范围内对观察结果进行分组?

来自分类Dev

当有多个时间戳时,如何在mysql中按一天中的小时对数据进行分组?

来自分类Dev

sql查询按连续日期范围内的数据进行分组

来自分类Dev

如何在范围内加入时间戳(范围不存在)

来自分类Dev

如何在熊猫的时间戳范围内读取 CSV 值?

来自分类Dev

在excel中对特定范围内的数据进行分组

来自分类Dev

如何在范围内对Bash中的整数排序数组进行分组

来自分类Dev

SQLite:在特定时间间隔内对数据进行分组

来自分类Dev

如何在 Excel 中对数据进行分组后添加具有 ID 数字范围的列

来自分类Dev

如何在非连续范围内使用countif?

来自分类Dev

如何根据值范围对数据进行分组

来自分类Dev

如何在特定时间范围内使用速率限制进行异步API调用?

来自分类Dev

计算时间范围内的分组行

来自分类Dev

MySQL:如何在一定范围内“分组”?

来自分类Dev

如何在特定时间范围内获取字典或数据集?

来自分类Dev

如何在Django中显示给定时间范围内的数据?

来自分类Dev

如何在 MySQL 数据库中的给定范围内找到缺失的时间值?

来自分类Dev

BigQuery如何在一段时间范围内展平表集合后如何分组

来自分类Dev

根据连续行之间的时间差对数据帧中的行进行分组

来自分类Dev

如何时间戳范围之间计算(在特定范围内)的小时和分钟的总量

来自分类Dev

如何在相同比例范围内对所有参数的数据进行归一化

来自分类Dev

如何在不同的时间范围内计算公式

来自分类Dev

将数据分组到范围内

来自分类Dev

如何在Angular 2中对数据进行分组?

来自分类Dev

如何在.NET图表的YAxis上对数据进行分组?

来自分类Dev

Python:如何在X出现之间对数据进行分组

Related 相关文章

  1. 1

    在时间范围内对数据进行分组

  2. 2

    在时间范围内对数据进行分组

  3. 3

    如何在不连续范围内跳过分组时对记录进行分组?

  4. 4

    如何在列范围内对观察结果进行分组?

  5. 5

    当有多个时间戳时,如何在mysql中按一天中的小时对数据进行分组?

  6. 6

    sql查询按连续日期范围内的数据进行分组

  7. 7

    如何在范围内加入时间戳(范围不存在)

  8. 8

    如何在熊猫的时间戳范围内读取 CSV 值?

  9. 9

    在excel中对特定范围内的数据进行分组

  10. 10

    如何在范围内对Bash中的整数排序数组进行分组

  11. 11

    SQLite:在特定时间间隔内对数据进行分组

  12. 12

    如何在 Excel 中对数据进行分组后添加具有 ID 数字范围的列

  13. 13

    如何在非连续范围内使用countif?

  14. 14

    如何根据值范围对数据进行分组

  15. 15

    如何在特定时间范围内使用速率限制进行异步API调用?

  16. 16

    计算时间范围内的分组行

  17. 17

    MySQL:如何在一定范围内“分组”?

  18. 18

    如何在特定时间范围内获取字典或数据集?

  19. 19

    如何在Django中显示给定时间范围内的数据?

  20. 20

    如何在 MySQL 数据库中的给定范围内找到缺失的时间值?

  21. 21

    BigQuery如何在一段时间范围内展平表集合后如何分组

  22. 22

    根据连续行之间的时间差对数据帧中的行进行分组

  23. 23

    如何时间戳范围之间计算(在特定范围内)的小时和分钟的总量

  24. 24

    如何在相同比例范围内对所有参数的数据进行归一化

  25. 25

    如何在不同的时间范围内计算公式

  26. 26

    将数据分组到范围内

  27. 27

    如何在Angular 2中对数据进行分组?

  28. 28

    如何在.NET图表的YAxis上对数据进行分组?

  29. 29

    Python:如何在X出现之间对数据进行分组

热门标签

归档