Wejście to tablica o długości 'n'. Muszę wygenerować wszystkie możliwe kombinacje elementów tablicy, w tym wszystkie kombinacje z mniejszą liczbą elementów z tablicy wejściowej.PostgreSQL znajduje wszystkie możliwe kombinacje (permutacje) w zapytaniu cyklicznym
IN: j='{A, B, C ..}'
OUT: k='{A, AB, AC, ABC, ACB, B, BA, BC, BAC, BCA..}'
Z powtórek, więc z AB
BA
..
Próbowałem coś takiego:
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;
To jest generowanie kombinacji bez powtórzeń ... więc muszę modyfikować że jakoś .
Co próbowaliście? Czy musisz to zrobić w Postgres? Czy możesz użyć języka pl/PGSQL lub innego języka proceduralnego? Musisz użyć tablic? –
Czy chcesz mieć ciągi o długości od 1 do 3? – 1010
Dane wejściowe mają być zmienne, więc powinny tworzyć kombinacje ze wszystkich elementów w tablicy .. – Adam