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

Redshift SQL:分组后合并特定前缀行并求和的实现方法

问题场景

执行以下分组查询:

SELECT ColumnA, SUM(ColumnB)
FROM table
GROUP BY ColumnA;

得到结果表:

ColumnAColumnB
Car999
Bike500
Motorbike red1000
Motorbike blue1500

需要合并所有以"Motorbike"开头的行,最终期望结果:

ColumnAColumnB
Car999
Bike500
Motorbikes2500

解决方案

核心是通过CASE表达式统一分组标识,把以"Motorbike"开头的行归为同一组,推荐直接在原表上完成分组(效率更高):

SELECT
  CASE
    WHEN ColumnA LIKE 'Motorbike%' THEN 'Motorbikes'
    ELSE ColumnA
  END AS ColumnA,
  SUM(ColumnB) AS ColumnB
FROM table
GROUP BY
  CASE
    WHEN ColumnA LIKE 'Motorbike%' THEN 'Motorbikes'
    ELSE ColumnA
  END;

如果只能基于已分组后的结果表(假设表名为grouped_result)处理,可执行二次分组:

SELECT
  CASE
    WHEN ColumnA LIKE 'Motorbike%' THEN 'Motorbikes'
    ELSE ColumnA
  END AS ColumnA,
  SUM(ColumnB) AS ColumnB
FROM grouped_result
GROUP BY
  CASE
    WHEN ColumnA LIKE 'Motorbike%' THEN 'Motorbikes'
    ELSE ColumnA
  END;

说明

  • 用LIKE 'Motorbike%'比LEFT(ColumnA,9)更灵活,无需固定前缀长度;如果确定前缀长度固定,也可以替换成LEFT(ColumnA,9) = 'Motorbike'。
  • 操作时机:直接从原表处理是在第一次分组时就定义合并规则,避免二次分组的额外计算;若只能基于已分组结果操作,才需要执行二次分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:30