输入是一个长度为'n'的数组。我需要生成包括从输入数组中选择更少元素的所有可能组合的数组元素的所有可能组合。
IN: j='{A, B, C ..}'
OUT: k='{A, AB, AC, ABC, ACB, B, BA, BC, BAC, BCA..}'
有重复,比如AB
和BA
..
我尝试了类似以下的方法:
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;
它生成的组合没有重复项...所以我需要以某种方式进行修改。