8

目前,我的表有三个不同的字段id1id2actionsaction是字符串类型。例如,我的表格看起来像下面给出的表格:

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 的一些基础知识,并且可以根据条件连接列,但不确定这是否可以通过查询来实现。如果这可以实现,那么推进这个逻辑的实施的好方法是什么?

4

2 回答 2

15

尝试ARRAY_JOIN使用ARRAY_AGG

SELECT
    id1,
    id2,
    ARRAY_JOIN(ARRAY_AGG(actions), ',') actions
FROM yourTable
GROUP BY
    id1,
    id2;
于 2019-03-27T05:17:16.753 回答
0

如果您希望将结果作为一个数组,您可以使用 flatten 而不是 array_join:

select   
    id1,  id2,   flatten(array_agg(actions)) as actions  
from table  
group by id1, id2  
于 2019-10-28T20:54:50.443 回答