如何将行转换为 presto 映射?

How convert rows to map in 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 引擎很快。有什么想法吗?

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 的最快回复!