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

SQL实现Table表分组求和后合并相同Level1行的方法

需求实现方案

以下按常用工具场景分别给出可直接落地的实现方法:


转换结果参考

第一次转换结果(分组求和后按Level1排序)

Level1Level2Level3_sum
FRDF1000
FRPA30888
UKLN1100
USCA37000
USLA10000

第二次转换结果(同Level1合并后)

Level1Level2Level3_sum
FRDF1000
PA30888
UKLN1100
USCA37000
LA10000

方案1:纯SQL实现

第一次转换修正SQL

注:原始SQL不符合标准SQL规范,补充非聚合字段到分组条件避免报错

SELECT Level1, Level2, SUM(Level3) AS Level3_sum
FROM `Table`
GROUP BY Level1, Level2
ORDER BY Level1 ASC

第二次转换(合并同Level1显示)SQL

SELECT 
  CASE WHEN rn = 1 THEN Level1 ELSE '' END AS Level1,
  Level2,
  Level3_sum
FROM (
  SELECT 
    Level1, 
    Level2, 
    SUM(Level3) AS Level3_sum,
    ROW_NUMBER() OVER(PARTITION BY Level1 ORDER BY Level2) AS rn
  FROM `Table`
  GROUP BY Level1, Level2
) t
ORDER BY Level1 ASC, rn ASC

方案2:Excel实现

  • 第一步分组求和:选中原始数据区域,点击「数据」选项卡→插入数据透视表,行区域依次拖入Level1、Level2,值区域拖入Level3选择求和,排序设置按Level1升序即可得到第一次转换结果
  • 第二步合并同Level1行:选中第一次结果的Level1列所有数据,点击「开始」选项卡→「对齐方式」组→「合并后居中」下拉按钮→选择「相同内容单元格合并」即可完成效果

方案3:Python Pandas实现

import pandas as pd
# 构造原始数据(实际使用时替换为自己的数据源读取逻辑即可)
data = {
    'id': [1,2,3,4,5,6,7,8],
    'Level1': ['US','FR','US','US','UK','UK','FR','FR'],
    'Level2': ['CA','PA','CA','LA','LN','LN','PA','DF'],
    'Level3': [13000,30000,24000,10000,500,600,888,1000]
}
df = pd.DataFrame(data)

# 第一次转换:分组求和+排序
df_first = df.groupby(['Level1','Level2'], as_index=False)['Level3'].sum().sort_values('Level1')

# 第二次转换:合并相同Level1显示
df_second = df_first.copy()
df_second['Level1'] = df_second['Level1'].mask(df_second['Level1'].duplicated(), '')

print(df_second)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:30:03