You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Presto/Hive中如何编写SQL查询分组聚合生成数组

Presto 分组聚合字段为数组的SQL实现

核心使用Presto内置的array_agg聚合函数即可实现需求,该函数会按分组规则,将同组内指定字段的所有值收集为数组类型,输出格式与要求的["Apple","Orange"]完全一致。

假设存储数据的源表名为product,可直接使用如下SQL:

SELECT
    Type,
    array_agg(name) AS name_array
FROM product
GROUP BY Type;

针对给出的两条测试数据(Type均为Fruit,name分别为Apple、Orange),执行上述SQL后返回结果为:

Typename_array
Fruit["Apple","Orange"]

常见扩展用法

  • 如需对数组内元素排序,可在array_agg中增加ORDER BY子句:
    -- 按name字段字典序升序排列数组元素
    array_agg(name ORDER BY name) AS name_array
    
  • 如需对同组内的name值去重后再聚合,增加DISTINCT关键字即可:
    array_agg(DISTINCT name ORDER BY name) AS name_array
    
  • 如果不需要保留null值,可在WHERE子句中提前过滤,避免数组中出现null元素:
    SELECT
        Type,
        array_agg(name ORDER BY name) AS name_array
    FROM product
    WHERE name IS NOT NULL
    GROUP BY Type;
    

内容的提问来源于stack exchange,提问作者user19460554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:36:26