Google Sheets中按另一列唯一ID对指定列数值求和问题咨询
Google Sheets 实现方案
假设你的user_id存在A列,total_paid存在B列,推荐两种稳定的实现方式:
- 方案1:
QUERY函数(逻辑和后续SQL迁移完全对齐,推荐优先用)
直接输入公式:
逻辑说明:先按=SUM(QUERY(A:B, "SELECT MAX(B) WHERE A IS NOT NULL GROUP BY A", 1))user_id分组提取每个用户唯一的total_paid(同个用户的total_paid数值一致,用MAX/MIN/AVG均可),再对提取后的数值求和,和示例结果一致返回72。 - 方案2:纯函数组合实现
如果你更习惯用基础函数组合,可以用:
逻辑说明:先提取所有唯一的=SUM(BYROW(UNIQUE(A:A), LAMBDA(id, XLOOKUP(id, A:A, B:B))))user_id,再逐个匹配对应用户的total_paid,最后求和。
你之前用SUMIFS搭配COUNTUNIQUE失败的原因是COUNTUNIQUE只能返回唯一用户的数量,无法关联每个用户对应的total_paid数值,自然无法完成求和计算。
原生SQL 实现方案
和上面Google Sheets的QUERY逻辑完全对齐,支持绝大多数SQL方言(MySQL/PostgreSQL/BigQuery等均可直接运行),迁移零成本:
SELECT SUM(total_paid) AS total_paid FROM ( SELECT DISTINCT user_id, total_paid FROM 你的表名 ) AS distinct_user_pay
如果你的业务场景中存在同个user_id对应不同total_paid的情况,可以用和Google Sheets完全一致的分组逻辑:
SELECT SUM(paid_per_user) AS total_paid FROM ( SELECT user_id, MAX(total_paid) AS paid_per_user FROM 你的表名 GROUP BY user_id ) AS user_grouped_pay
内容的提问来源于stack exchange,提问作者Dar Shavit
相关产品推荐
相关产品推荐

