如何在 presto 中将列转换为数组

how to convert a column to an array in presto

Postgres 提供了一种将列转换为数组的方法。示例查询:

WITH
    dataset AS (
        SELECT '1' as a
        union
        SELECT '2' as a
        union
        SELECT '3' as a
    )
SELECT
    array(select a from dataset) as array_result;

returns

| array_result |
|--------------|
| {2,3,1}      |

如何用 Presto 做同样的事情 SQL?

使用array_agg(x [ORDER BY y])聚合函数:

WITH
    dataset AS (
        SELECT '1' as a
        union all
        SELECT '2' as a
        union all
        SELECT '3' as a
    )
SELECT
    array_agg(a) as array_result from dataset;

结果:

['3', '2', '1']

如果需要array<int>,在聚合前投射:array_agg(cast(a as int))