嗨,我想做SQL Presto查询数据表(说user_data))看起来像
user | Col 1 | Col 2 | Col 3
-----------------------------
A | b | 2 | T
B | a | 2 | F
A | c | 3 | F
B | d | 4 | T
A | d | 2 | T
使用这个数据表,我想生成以下输出:
输出:为每个不同的用户聚合列,同时保留列值的顺序
user | Col 1 | Col 2 | Col 3
--------------------------------
A | (b,c,d)| (2,3,2)| (T,F,T)
B | (a,d) | (2,4) | (F,T)
提前感谢!
我认为应该使用GROUP BY,但不知道如何使用。谢谢你!
可以使用array_agg,但是需要定义元素的顺序。例如,在user_data
表中,您需要使用自动生成的id
或date
等列来创建或修改,以确保数据以独特的方式排序。
SELECT user
,array_agg(Col1 ORDER BY Col1) as Col1
,array_agg(Col2 ORDER BY Col1) as Col2
,array_agg(Col3 ORDER BY Col1) as Col3
FROM user_data
GROUP BY user;