如何将行转换为presto映射?

时间:2020-06-29 17:29:30

标签: sql presto

考虑SQL语句:

SELECT key, value
FROM (
  SELECT key, value, row_number() OVER (PARTITION BY key ORDER BY length(value) DESC) AS rn
  FROM my_table
)
WHERE rn <= 5;

这将产生:

key value
A   1
A   2
B   10

如何使它像这样:

key values
A   [1;2;3;4;5]
B   [10;20;30;40;50]

SQL引擎已保存。有任何想法吗?

1 个答案:

答案 0 :(得分:2)

map_agg是解决方案:

SELECT key, map_agg(key, value)
FROM (
  SELECT key, value, row_number() OVER (PARTITION BY key ORDER BY length(value) DESC) AS rn
  FROM my_table
)
WHERE rn <= 5 group by key;

非常感谢@Shantanu Kher的最快回复!