当前,我的表具有三个不同的字段,id1
,id2
和actions
。 action
是字符串类型。例如,我的表看起来像下面给出的表:
id1 | id2 | actions
---------------------------
"a1" "a2" "action1"
"b1" "b2" "action2"
"a1" "a2" "action3"
如果id1
的值和id2
的值对于任何数目的行都是相同的,我想合并这些行,以使actions
字段成为字符串列表。如果没有行具有id1
的相同值和id2
的相同值,我仍然希望将actions
字段转换为列表,但只能使用一个字符串。例如,查询的输出应类似于以下内容:
id1 | id2 | actions
---------------------------
"a1" "a2" ["action1", "action3"]
"b1" "b2" ["action2"]
我了解Presto的一些基础知识,可以根据条件加入列,但不确定是否可以通过查询来实现。如果能够做到这一点,那么执行此逻辑的一个好的方法是什么?
答案 0 :(得分:1)
尝试将ARRAY_JOIN
与ARRAY_AGG
一起使用:
SELECT
id1,
id2,
ARRAY_JOIN(ARRAY_AGG(actions), ',') actions
FROM yourTable
GROUP BY
id1,
id2;
答案 1 :(得分:0)
如果要将结果作为数组,则可以使用flatten代替array_join:
select
id1, id2, flatten(array_agg(actions)) as actions
from table
group by id1, id2