计算斜率数,SQL中值变化的次数

问题描述

我正在尝试编写代码来计算 sql 中每个状态的斜率数、值更改数和持续时间

我有如下表格:

    | Module   | MeasTime          | MeasDate  | Variable| Value|
    | ---      | ---               | ---       | ---     | ---  |
    |binaryTask|2020-01-02 00:00:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 00:10:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 00:20:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 00:30:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 00:40:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 00:50:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 01:00:00|2020-01-02 |binaryVal|   0  |
    |binaryTask|2020-01-02 01:10:00|2020-01-02 |binaryVal|   0  |
    |binaryTask|2020-01-02 01:20:00|2020-01-02 |binaryVal|   0  |
    |binaryTask|2020-01-02 01:30:00|2020-01-02 |binaryVal|   0  |
    |binaryTask|2020-01-02 01:40:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 01:50:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 02:00:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 02:10:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 02:20:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 02:30:00|2020-01-02 |binaryVal|   1  |
    |binaryTask|2020-01-02 02:40:00|2020-01-02 |binaryVal|   0  |
 
 .
 .
 .

您知道如何在 sql 中以良好的性能执行此操作吗?

提前致谢

解决方法

我部分解决了一个问题:

Number of values changes:
Select Module,Variable,Count(Diff)
FROM (
    SELECT Module,runningDifference(Value) as Diff
    FROM 'XX' 
    WHERE Diff = -1 or Diff = 1
)
GROUP BY Module,Variable

希望,这是一个好方法..它适用于我的问题

但是状态持续时间仍然有问题...