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

Presto SQL如何按列分组后基于行值条件生成映射类型新列

Presto 实现分组生成指定映射列的方案

你可以通过 Presto 内置的聚合函数map_agg()实现需求,该函数会将输入的两组值分别作为键、值聚合成MAP类型字段,具体实现可以根据是否需要保留无匹配行的分组选择两种写法:

写法1:仅返回存在符合条件行的分组

先过滤符合Col2 >=3条件的行再分组聚合,执行效率更高,无匹配的Second分组不会出现在结果中:

SELECT
    Col1,
    map_agg(Col2, Col3) AS col_mapping
FROM 你的实际表名
WHERE Col2 >= 3
GROUP BY Col1

输出示例:

Col1col_mapping
First{3:"three",4:"four",5:"five"}

写法2:保留所有Col1分组

如果需要保留所有分组,无匹配行时返回空MAP,可以搭配FILTER子句实现:

SELECT
    Col1,
    map_agg(Col2, Col3) FILTER (WHERE Col2 >= 3) AS col_mapping
FROM 你的实际表名
GROUP BY Col1

输出示例:

Col1col_mapping
First{3:"three",4:"four",5:"five"}
Second{}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:07