我想在流分析中计算连续重复值。例如,我有一个传感器,它每秒记录值 0 或 1。如果我有超过 30 个连续的 0,我想设置一个 1 分钟的滑动窗口并计数。我不能在组子句中计算 0,因为它们可能不是连续的。例如,如果我有:
ID Value TimeStamp
1, 1, second 1
2, 1, second 2
3, 1, second 3
4, 1, second 4
5, 1, second 5
6, 1, second 6
7, 1, second 7
8, 0, second 8
9, 0, second 9
10, 0, second 10
11, 0, second 11
12, 0, second 12
13, 0, second 13
14, 0, second 14
15, 1, second 15
16, 1, second 16,
17, 1, second 17
18, 1, second 18
我想获得:
MinId Value Count
1, 1, 7
8, 0, 7
15,1, 4
甚至更好,我想在同一分钟内获得它(最大连续 1 为 7,最大连续 0 为 7)
MinId Value MaxCount
1, 1, 7
8, 0, 7
在 SQL 中,我会做这样的事情:
select grp, value, min(id), max(id), count(*) as cnt, max(fecha) as Fecha
from (select t.*,
(row_number() over (order by id) - row_number() over (partition by value order by id)
) as grp
from [StockSensor] t
) t
group by grp, value
order by min(id);
使用流分析,您具有 LAG 功能,但我找不到计算连续数字的方法。
有任何想法吗?