为组聚合函数I具有下表:阵列相交通过
CREATE TABLE person
AS
SELECT name, preferences
FROM (VALUES
('John', ARRAY['pizza', 'meat']),
('John', ARRAY['pizza', 'spaghetti']),
('Bill', ARRAY['lettuce', 'pizza']),
('Bill', ARRAY['tomatoes'])
) AS t(name, preferences);
欲group by person
与intersect(preferences)
作为聚合函数。所以我想要以下输出:
person | preferences
-------------------------------
John | ['pizza']
Bill | []
这应该如何在SQL中完成?我想我需要做类似以下的事情,但X
函数是什么样的?
SELECT person.name, array_agg(X)
FROM person
LEFT JOIN unnest(preferences) preferences
ON true
GROUP BY name
可能会加入unnest(首选项)? –
@VaoTsun我认为这是一个好主意,但我该如何与该连接相交(并在之后应用'array_agg')? –
数组有重复值的机会吗? –