L'input è una matrice di lunghezza 'n'. Devo generare tutte le possibili combinazioni di elementi dell'array, incluse tutte le combinazioni con meno elementi dall'array di input.PostgreSQL trova tutte le combinazioni possibili (permutazioni) nella query ricorsiva
IN: j='{A, B, C ..}'
OUT: k='{A, AB, AC, ABC, ACB, B, BA, BC, BAC, BCA..}'
Con ripetizioni, quindi con AB
BA
..
Ho provato qualcosa di simile:
WITH RECURSIVE t(i) AS (SELECT * FROM unnest('{A,B,C}'::text[]))
,cte AS (
SELECT i AS combo, i, 1 AS ct
FROM t
UNION ALL
SELECT cte.combo || t.i, t.i, ct + 1
FROM cte
JOIN t ON t.i > cte.i
)
SELECT ARRAY(SELECT combo FROM cte ORDER BY ct, combo) AS result;
Si sta generando combinazioni senza ripetizioni ... quindi ho bisogno di modificare che in qualche modo .
Cosa hai provato? Devi farlo a Postgres? Puoi usare pl/PGSQL o un altro linguaggio procedurale? Devi usare gli array? –
vuoi stringhe di lunghezza solo da 1 a 3? – 1010
L'input deve essere variabile, quindi dovrebbe creare combinazioni da tutti gli elementi dell'array. – Adam