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

如何使用标准SQL将指定数据字段聚合到同一行?

问题分析与解决方案

原查询无法得到预期结果的原因:

  • GROUP BY子句错误包含了Skill字段,导致每个不同的Skill单独成组,完全无法实现同类型Skill的聚合
  • 多余使用DISTINCT(包括SELECT和array_agg中的),会过滤掉需要保留的重复Type值,同时破坏聚合逻辑
  • 使用array_agg会生成数组类型结果,但目标需求是逗号分隔的字符串格式,更适合用string_agg

正确的查询语句

要实现目标结果,需按ID、Quarter、Type分组,对同组的Skill进行字符串聚合:

SELECT 
    ID, 
    Quarter, 
    string_agg(Skill, ', ') AS Skill,
    string_agg(Type, ', ') AS Type
FROM table1
GROUP BY ID, Quarter, Type
ORDER BY ID, Quarter, Type

如果确实需要数组类型的结果(而非字符串),可替换为array_agg:

SELECT 
    ID, 
    Quarter, 
    array_agg(Skill) AS Skill,
    array_agg(Type) AS Type
FROM table1
GROUP BY ID, Quarter, Type
ORDER BY ID, Quarter, Type

结果说明

执行上述查询后,会得到与目标一致的结果:

  • 同一ID、季度、技能类型下的Skill会被逗号分隔聚合
  • 不同技能类型会保留为单独行(比如B的Q1中Technical和Soft Skill分为两行)

内容的提问来源于stack exchange,提问作者learning to code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:25:19