sql - 如何在 redshift 中对字段进行 GROUP BY 和 CONCATENATE

标签 sql postgresql group-by string-concatenation amazon-redshift

如何在 Redshift 中对字段进行 GROUP BY 和 CONCATENATE,例如 如果我有 table

ID   COMPANY_ID   EMPLOYEE
1    1            Anna
2    1            Bill
3    2            Carol
4    2            Dave

我怎样才能得到这样的结果

COMPANY_ID   EMPLOYEE
1            Anna, Bill
2            Carol, Dave

There are some solutions for PostgreSQL ,但这些答案中提到的功能目前在 Redshift 中均不可用。

最佳答案

好吧,我来晚了一点,但是announcement about this feature发生在2015年8月3日。 Redshift 引入了 LISTAGG 窗口函数,现在可以这样做了。 这是您问题的快速解决方案 - 可能有用也可能没有用,但将其放在这里以便人们知道!

SELECT COMPANY_ID,
       LISTAGG(EMPLOYEE,', ')
WITHIN GROUP (ORDER BY EMPLOYEE)
OVER (PARTITION BY COMPANY_ID) AS EMPLOYEE
FROM YOUR_TABLE
ORDER BY COMPANY_ID

我很高兴看到这个功能,我们的许多生产脚本都准备好升级 Redshift 不断添加的所有新功能。

Here is the documentation about the function

关于sql - 如何在 redshift 中对字段进行 GROUP BY 和 CONCATENATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502108/

相关文章:

python - 仅使用 pyscopg2 从 App Engine 连接到 Cloud SQL Postgres

postgresql - Postgres 运行缓慢的删除查询

c# - EF LINQ 翻译 : complex query

mysql - 试图从日期相距小于 5 分钟的行中消除

sql - 读取 XML 列

java - MySQL 返回 NPE 从表中获取 ID(作为字符串)

mysql - 如果源 ID 相同,如何对计数的行求和

postgresql - POSTGRES 中的 numeric(9,0) 和 int 有什么区别?

sql - 在执行其他类型聚合时获得最高类别

mysql - 为什么 num IN ("num1,num2") 在第一个逗号的顶部?