我有以下表格:
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);
我希望使用intersect(preferences)
作为聚合函数,按照person
分组。因此,我需要如下输出:
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
array_agg
)? - Katrine Bersnull
。 - Katrine Bers