28

我是 Presto 的新手,希望获得与 MySQL 中的 group_concat 函数相同的功能。以下两个是等价的吗?如果没有,关于如何在 Presto 中重新创建 group_concat 功能的任何建议?

MySQL:

select 
  a,
  group_concat(b separator ',')
from table
group by a

快速:

select 
  a,
  array_join(array_agg(b), ',')
from table
group by a

(在搜索 group_concat 功能时,在此处发现这是建议的 Presto 解决方法。)

4

3 回答 3

38

尝试在 Presto 中使用它代替 group_concat ::

select 
  a,
  array_join(array_agg(b), ',')
from table
group by a
于 2018-02-24T12:41:07.607 回答
23

此外,如果您只寻找唯一值 - 相当于group_concat(distinct ... separator ', ')- 试试这个:

array_join(array_distinct(array_agg(...)), ', ')
于 2018-03-20T19:51:43.607 回答
4

尽管该功能已被请求,但此答案没有任何功能。

您的问题中提到了最接近的等价物。

WITH tmp AS (
SELECT 'hey' AS str1
UNION ALL
SELECT ' there'
)
SELECT array_join(array_agg(str1), ',', '') AS joined
FROM tmp
于 2017-06-20T18:33:13.690 回答