sql - 将列的所有唯一值转换为 GROUPY BY 查询返回列中的集合或数组

标签 sql postgresql aggregation

我有以下查询:

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

关于sql - 将列的所有唯一值转换为 GROUPY BY 查询返回列中的集合或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818817/

相关文章:

sql - 开始尝试在SQL Server 2005上捕获,如何将ERROR_stuff发送给调用的父级?

postgresql - 将 Parquet 文件存储到 PostgreSQL 数据库中

process - Bugtracker - 聚合和自动化工作流

mongodb - 日期范围在聚合管道中不起作用,但在 find() 中起作用

c# - 无法从 C# 选择全局临时表 (##TempTable)

sql - 将表变量与 sp_executesql 一起使用

mysql - 选择新闻,加入多个标签

sql - 按多个条件分组

jquery - rails : How to get Jquery to update a database column after a click

r - 按组逐列串联