Мне было сложно сформулировать заголовок этого вопроса, но в основном я хочу узнать, сколько строк являются подмножествами списка в текущей строке. Пример должен прояснить:
CREATE TABLE t (
elements integer[] NOT NULL
);
INSERT INTO t(elements)
VALUES
('{1}'),
('{1}'),
('{2}'),
('{3}'),
('{1,2}'),
('{1,2}'),
('{2,3}');
Теперь ответ, который я ищу, должен быть
+------------+----------+
| elements | covers |
|------------+----------|
| [1] | 2 | [1], [1]
| [1] | 2 | [1], [1]
| [2] | 1 | [2]
| [3] | 1 | [3]
| [1, 2] | 5 | [1], [1], [2], [1, 2], [1, 2]
| [1, 2] | 5 | [1], [1], [2], [1, 2], [1, 2]
| [2, 3] | 3 | [2], [3], [2, 3]
+------------+----------+
Я думаю, это должно быть сделано с помощью операторов <@ или @> . Можно ли это сделать оконной функцией? Или как еще мне легче всего это сделать?