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

如何按同列不同值筛选行 实现同ID下各类型金额聚合单行展示

问题说明

现有交易系统使用同一列TYPE存储交易类型,常见取值包括Bill、Sales Order、Invoice、Purchase Order等,同一ID可关联多条交易记录(比如ID 1可同时关联收入、成本类的多条记录),原始数据格式示例:

ID  TYPE       AMOUNT
 1  Bill         5 
 1  Bill         2 
 1  PurcOder     2 
 2  SAlesOrder   1

需要提取全量数据,满足两个要求:

  • 每个ID下的每类TYPE仅展示1行
  • 同一ID+TYPE维度下的AMOUNT做求和汇总
实现方案

核心逻辑是按ID、TYPE两个维度做分组,对AMOUNT字段做求和聚合,根据处理数据的工具不同,可选择对应实现方式:

SQL(数据库直接取数)

如果直接从业务库查询数据,使用GROUP BY语法即可,基础查询语句:

SELECT
  ID,
  TYPE,
  SUM(AMOUNT) AS total_amount
FROM 交易表名
GROUP BY ID, TYPE
ORDER BY ID, TYPE;

用示例数据跑上述语句,输出结果为:

ID  TYPE       total_amount
 1  Bill         7
 1  PurcOder     2
 2  SAlesOrder   1

注意:原始数据里存在TYPE拼写不统一、大小写混乱的问题(比如示例里的PurcOder是Purchase Order的错写、SAlesOrder大小写错误),可以在查询时用CASE WHEN做值映射,统一标准类型名,避免同类型因为拼写问题被拆分成多行:

SELECT
  ID,
  CASE
    WHEN TYPE IN ('PurcOder', 'PO', 'PurOrder') THEN 'Purchase Order'
    WHEN TYPE IN ('SAlesOrder', 'SO', 'SalesOrd') THEN 'Sales Order'
    ELSE TYPE
  END AS standard_type,
  SUM(AMOUNT) AS total_amount
FROM 交易表名
GROUP BY ID, standard_type
ORDER BY ID, standard_type;

Python Pandas(离线数据处理)

如果数据已经导出为CSV/Excel文件,用Pandas处理的代码示例:

import pandas as pd

# 替换为实际的数据读取逻辑,比如pd.read_csv("交易数据.csv")
df = pd.read_excel("交易数据.xlsx")

# 分组聚合计算金额总和
result = df.groupby(by=["ID", "TYPE"], as_index=False)["AMOUNT"].sum()
result = result.rename(columns={"AMOUNT": "total_amount"})

# 如需统一TYPE命名,加以下映射替换逻辑
type_replace_map = {
    "PurcOder": "Purchase Order",
    "SAlesOrder": "Sales Order"
}
result["TYPE"] = result["TYPE"].replace(type_replace_map)

Excel(轻量表格处理)

如果数据量不大,直接用Excel数据透视表即可快速得到结果:

  • 选中所有原始数据区域,点击顶部菜单栏「插入」→「数据透视表」
  • 在透视表字段配置面板,将ID、TYPE依次拖入「行」区域
  • 将AMOUNT拖入「值」区域,点击值字段设置,汇总方式选择「求和」
  • 即可直接输出符合要求的汇总结果

内容的提问来源于stack exchange,提问作者S. R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:01:18