在Presto中操作和聚合表列

  • 本文关键字:Presto 操作 sql presto
  • 更新时间 :
  • 英文 :


嗨,我想做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表中,您需要使用自动生成的iddate等列来创建或修改,以确保数据以独特的方式排序。

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;

最新更新