- 0_ : 表示按id分组时间排序的行号
- 1_ : 表示是否符合筛选条件, 例如卖出的钱/和上一条对比卖出的钱是不是2倍?
- 2_ : 找到连续行的结尾
- 3_ : 先filter 1_ 2_全是null的行, 用first( , true) 把连续的行分到一个组里.
consumer_id | time | code | 0_row_num part by consumer order by time |
1_lead 符合条件? | 2_找一个结尾 1_ is null ? lag(0_): null |
3_ 划分分组 过滤掉 1_ 2_全是null的行 first 忽略null |
---|---|---|---|---|---|---|
1 | 0 | a | 1 | 1 | null | 2 |
1 | 50 | a | 2 | null | 2 | 2 |
1 | 51 | b | 3 | 1 | null | 9 |
1 | 52 | b | 4 | 1 | null | 9 |
1 | 53 | b | 5 | 1 | null | 9 |
1 | 54 | b | 6 | 1 | null | 9 |
1 | 55 | b | 7 | 1 | null | 9 |
1 | 56 | b | 8 | 1 | null | 9 |
1 | 57 | b | 9 | null | 9 | 9 |
2 | 13 | c | 1 | null | null | deleted |
2 | 19 | a | 2 | null | null | deleted |
2 | 20 | b | 3 | 1 | null | 5 |
2 | 21 | b | 4 | 1 | null | 5 |
2 | 22 | b | 5 | null | 5 | 5 |