我有类似的数据
指数 | 旗帜 |
---|---|
0 | F |
1个 | Ť |
2 | Ť |
3 | Ť |
4 | F |
5 | F |
6 | Ť |
我想编写一个Postgres查询以将其转换为
指数 | 旗帜 | 团体 |
---|---|---|
0 | F | 0 |
1个 | Ť | 1个 |
2 | Ť | 1个 |
3 | Ť | 1个 |
4 | F | 2 |
5 | F | 2 |
6 | Ť | 3 |
每当标志在true和false之间更改时,组就会增加。
我怎样才能做到这一点?
具有LAG()
和SUM()
窗口功能:
SELECT "index", flag, SUM(r::int) OVER (ORDER BY "index") "group"
FROM (
SELECT *, flag <> LAG(flag, 1, flag) OVER (ORDER BY "index") r
FROM tablename
) t
参见演示。
结果:
指数 | 旗帜 | 团体 |
---|---|---|
0 | F | 0 |
1个 | Ť | 1个 |
2 | Ť | 1个 |
3 | Ť | 1个 |
4 | F | 2 |
5 | F | 2 |
6 | Ť | 3 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句