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

如何查询计算相同ID的Value1总和与不匹配记录的Value2总和

实现方案

通用SQL实现(支持MySQL、PostgreSQL、SQL Server等绝大多数关系型数据库)

核心逻辑为按ID分组后,对Value1直接求和,对Value2先判断同分组下数值是否全部一致,再决定取原值还是求和:

SELECT 
    ID,
    SUM(Value1) AS Value1,
    CASE 
        WHEN COUNT(DISTINCT Value2) = 1 THEN MAX(Value2)
        ELSE SUM(Value2)
    END AS Value2
FROM 你的表名
GROUP BY ID
ORDER BY ID;

逻辑说明

  • 用GROUP BY ID将相同ID的记录归为同一组
  • Value1字段直接调用SUM()聚合函数求和,完全匹配需求
  • Value2字段通过CASE WHEN做分支处理:
    • 用COUNT(DISTINCT Value2)统计当前ID分组下Value2的去重后数量,若等于1说明所有值完全相同,取MAX(Value2)即可(MIN、AVG返回结果一致,可任选)
    • 若去重后数量大于1,说明存在不同值,调用SUM(Value2)求和即可

Pandas实现(Python场景)

如果是用Python处理表格数据,可参考以下代码:

import pandas as pd

# 示例数据构造,实际使用时替换为你自己的数据读取逻辑即可
df = pd.DataFrame({
    'ID': [1,1,2,2,3],
    'Value1': [30,32,20,20,10],
    'Value2': [50,50,60,65,70]
})

# 自定义Value2的聚合规则
def handle_value2(group):
    if group.nunique() == 1:
        return group.iloc[0]
    return group.sum()

# 分组聚合得到结果
result = df.groupby('ID').agg(
    Value1 = ('Value1', 'sum'),
    Value2 = ('Value2', handle_value2)
).reset_index()

print(result)

以上两种实现返回的结果都和你给出的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 01:54:03