я имел таблицу, назовем его items
Postgres SQL Получить все перестановки столбцов
item_id x
A 0.1
A 0.2
B 0.25
B 0.35
C 0.4
C 0.5
Я в основном ищет, чтобы получить все возможные перестановки и нумерации этих перестановок. В основном, используя соединение на самой таблице с items_version_a.item_id <> items_version_b.item_id
, мне удалось получить таблицу, которая дает все возможные комбинации (24 строки). Я хотел бы создать столбец с именем iteration
, возможно, это выглядит примерно так: Это обеспечило бы подсчет различных перестановок.
item_id x iteration
A 0.1 1
A 0.1 2
A 0.1 3
A 0.1 4
A 0.2 5
A 0.2 6
A 0.2 7
A 0.2 8
B 0.25 1
B 0.25 2
B 0.25 5
B 0.25 6
B 0.35 3
B 0.35 4
B 0.35 7
B 0.35 8
C 0.4 1
C 0.4 3
C 0.4 5
C 0.4 7
C 0.5 2
C 0.5 4
C 0.5 6
C 0.5 8
Упорядочение технически не важно, но я нужен iteration
столбец правильно захватить все перестановки. Но вы видите, что в приведенном выше примере, если бы вы были на заказ по iteration, item_id
вы получите
item_id x iteration
A 0.1 1
B 0.25 1
C 0.4 1
A 0.1 2
B 0.25 2
C 0.5 2
A 0.1 3
B 0.35 3
C 0.4 3
A 0.1 4
B 0.35 4
C 0.5 4
A 0.2 5
B 0.25 5
C 0.4 5
A 0.2 6
B 0.25 6
C 0.5 6
A 0.2 7
B 0.35 7
C 0.4 7
A 0.2 8
B 0.35 8
C 0.5 8
И вы можете увидеть, что каждый из этих итераций делает захват уникальной перестановки.
Я думал об этом, но это на самом деле не работает. Причина в том, что он фактически не группирует перестановки правильно. Если вы выполняете 'row_number() поверх (разделение по порядку a.item_id от ax) как уведомление об итерации, то для итерации 1 вы получите A = 0,1, B = 0,25 и C = 0,4, но вы также получите то же самое для итерации 2 – Vincent
Интересно, поможет ли здесь меньший пример, содержащий только 2 элемента, а не 3. – Vincent
это ближе? –