将列的所有唯一值转换为 GROUPY BY 查询返回列中的集合或数组
Turn all unique values of a column into a set or array in a returned column of a GROUPY BY query
我有以下查询:
SELECT COUNT(*) count, userid, displaydate
FROM data
GROUP BY userid, displaydate
HAVING COUNT(userid) > 1
我想修改它以包含另一列 type
以便我可以创建一个数组,其中包含每个组出现的所有唯一 type
值。例如,如果我有这样的数据:
userid, displaydate, type
a, 1242242422, 0
a, 1242242422, 1
如何返回以下内容:
(a, 1242242422, [0, 1])
使用array_agg
.
SELECT userid, displaydate, array_agg(distinct type)
-- use array_agg(distinct type order by type) if the type needs to be ordered
FROM data
GROUP BY userid, displaydate
HAVING COUNT(*) > 1
我有以下查询:
SELECT COUNT(*) count, userid, displaydate
FROM data
GROUP BY userid, displaydate
HAVING COUNT(userid) > 1
我想修改它以包含另一列 type
以便我可以创建一个数组,其中包含每个组出现的所有唯一 type
值。例如,如果我有这样的数据:
userid, displaydate, type
a, 1242242422, 0
a, 1242242422, 1
如何返回以下内容:
(a, 1242242422, [0, 1])
使用array_agg
.
SELECT userid, displaydate, array_agg(distinct type)
-- use array_agg(distinct type order by type) if the type needs to be ordered
FROM data
GROUP BY userid, displaydate
HAVING COUNT(*) > 1