目前,我的表有三个不同的字段id1,id2和actions。action是字符串类型。例如,我的表看起来类似于下面给出的表:
id1 | id2 | actions
---------------------------
"a1" "a2" "action1"
"b1" "b2" "action2"
"a1" "a2" "action3"
Run Code Online (Sandbox Code Playgroud)
如果任意数量的行的值id1和值id2都相同,我想合并这些行,以便该actions字段成为字符串列表。如果没有任何行具有相同的值id1和相同的值id2,我仍然想将actions字段转换为列表,但只使用一个字符串。例如,查询的输出应如下所示:
id1 | id2 | actions
---------------------------
"a1" "a2" ["action1", "action3"]
"b1" "b2" ["action2"]
Run Code Online (Sandbox Code Playgroud)
我知道 Presto 的一些基础知识,可以根据条件连接列,但不确定这是否可以通过查询来实现。如果可以实现这一点,那么推进该逻辑的实现有什么好的方法?
Tim*_*sen 12
尝试使用ARRAY_JOIN带ARRAY_AGG:
SELECT
id1,
id2,
ARRAY_JOIN(ARRAY_AGG(actions), ',') actions
FROM yourTable
GROUP BY
id1,
id2;
Run Code Online (Sandbox Code Playgroud)