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

按交易类型统计各交易方收发总额的双列求和实现方法

交易记录分类型统计实现方案

核心需求是按交易方维度去重,并排展示每个交易方的总转入、总转出金额,通过单轮分组+条件聚合即可实现,不需要多表关联或多次查询,性能最优。

  • 聚合时仅对符合交易类型的金额做累加,非目标类型的金额记为0不参与求和
  • 若需要统一交易方名称格式,可在分组前对Party Name字段做大小写统一处理

方案1:SQL 实现(直接在数据库查询统计)

适用于数据存储在MySQL、PostgreSQL等关系型数据库的场景,核心用CASE WHEN做条件判断求和,代码如下:

SELECT
  LOWER(`Party Name`) AS `Party Name`,
  SUM(CASE WHEN `transaction type` = 'recived' THEN `Ammount` ELSE 0 END) AS `total recievedAmount`,
  SUM(CASE WHEN `transaction type` = 'send' THEN `Ammount` ELSE 0 END) AS `total send`
FROM 替换为你的实际交易表名
GROUP BY LOWER(`Party Name`);

注意:代码中交易类型值recived和你提供的源数据拼写保持一致,如果实际业务中字段值为正确拼写received,请对应修改判断条件,避免统计结果为0。如果不需要统一名称为小写,可去掉LOWER()函数,直接按原Party Name字段分组。

查询返回结果和期望格式完全一致:

Party Nametotal recievedAmounttotal send
abc30006000
xyz30002000

方案2:Python Pandas 实现(离线DataFrame数据处理)

适用于数据已经加载为Python Pandas DataFrame对象的离线处理场景,代码如下:

import pandas as pd

# df 为你已加载完成的原始交易记录表DataFrame
# 统一交易方名称为小写,匹配期望输出格式
df['Party Name'] = df['Party Name'].str.lower()

# 分组聚合后重塑结构,得到分类型的求和结果
stat_result = df.groupby(['Party Name', 'transaction type'])['Ammount']\
                .sum()\
                .unstack(fill_value=0)\
                .reset_index()

# 重命名列,对齐期望输出格式
stat_result = stat_result.rename(columns={
    'recived': 'total recievedAmount',
    'send': 'total send'
})[['Party Name', 'total recievedAmount', 'total send']]

执行后stat_result的内容和期望统计结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:15:55