【发布时间】:2014-02-20 07:18:54
【问题描述】:
我正在处理作为传感器测量结果的时间序列数据。我需要确定数据平坦的情况 - 表明传感器故障。我想选择过去 24 小时内连续有 3 个以上不变的值。
我想我可能需要循环,但我没有在 sql 中使用循环。我假设我需要使用子查询来按日期时间排序。我也看过 LEAD 和 LAG。此外,我需要通过 SiteID 和 VariableID 来区分,我认为可以使用 PARTITION 来完成。
数据如下:
**SiteID**VariableID**DateTime**Value**
5 1 2014-01-27 12:15 5.576
5 1 2014-01-27 12:30 5.487
5 1 2014-01-27 12:45 5.573
5 1 2014-01-27 13:00 5.903
5 87 2014-01-27 12:15 -273.2
5 87 2014-01-27 12:30 -273.2
5 87 2014-01-27 12:45 -273.2
5 87 2014-01-27 13:00 -273.2
5 88 2014-01-27 12:15 -273.2
5 88 2014-01-27 12:30 -273.2
5 88 2014-01-27 12:45 -273.2
5 88 2014-01-27 13:00 -273.2
5 89 2014-01-27 12:15 -273.2
5 89 2014-01-27 12:30 -273.2
5 89 2014-01-27 12:45 -273.2
5 89 2014-01-27 13:00 -273.2
5 2 2014-01-27 12:15 30.61
5 2 2014-01-27 12:30 38.73
5 2 2014-01-27 12:45 32.84
5 2 2014-01-27 13:00 31.62
5 3 2014-01-27 12:15 -9.53
5 3 2014-01-27 12:30 -8.61
5 3 2014-01-27 12:45 -8.76
5 3 2014-01-27 13:00 -9.32
5 4 2014-01-27 12:15 0.298
5 4 2014-01-27 12:30 0.32
5 4 2014-01-27 12:45 0.317
5 4 2014-01-27 13:00 0.302
我想生成类似的东西:
**SiteID**VariableID**StartingDateTime**ValueCount**Value**
5 87 2014-1-27 12:15 4 -273.4
5 88 2014-1-27 12:15 4 -273.4
5 89 2014-1-27 12:15 4 -273.4
【问题讨论】:
标签: sql sql-server loops time-series