如何将行转换为 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 的最快回复!
考虑 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 的最快回复!