Мне нужно разделить таблицу в PostgreSQL на основе столбца, не сортируя и не делая результат уникальным;По сути, я пытаюсь воспроизвести поведение itertools.groupby()
из Python в PostgreSQL.
Учитывая таблицу, содержащую два столбца:
1 C
2 C
3 C
4 C
5 C
6 C
7 C
8 C
9 C
10 S
11 E
12 E
13 E
14 E
15 E
16 C
17 C
18 C
19 C
20 E
21 E
22 E
23 E
24 E
Я хочу разделить ее по значениюво втором (при сохранении существующего порядка), чтобы закончить с этим:
1 C 1
2 C 1
3 C 1
4 C 1
5 C 1
6 C 1
7 C 1
8 C 1
9 C 1
10 S 2
11 E 3
12 E 3
13 E 3
14 E 3
15 E 3
16 C 4
17 C 4
18 C 4
19 C 4
20 E 5
21 E 5
22 E 5
23 E 5
24 E 5
Я попытался добиться этого с помощью оконных функций, используя комбинацию ROW_NUMBER()
и LAG()
для сравнения текущегострока с предыдущим, чтобы увидеть, если он изменился.Проблема в этом случае заключалась в том, что мне также понадобилась бы переменная, которая увеличивается каждый раз, когда значение изменяется.