如何计算CMA_ID匹配两表中pops字段的百分比差值
两表匹配CMA_ID计算pops字段百分比差值实现方案

需求说明
现有两张数据表,需实现如下计算逻辑:编写适配公式,当两张表的CMA_ID字段值匹配时,自动计算对应记录中pops字段的百分比差值,即表1与表2的CMA_ID匹配时,返回两条匹配记录pops值的百分比差值结果。
分场景实现方案
场景1:Excel/WPS/Google Sheets等电子表格工具
假设表1的CMA_ID在A列、pops值在B列,表2的CMA_ID在A列、pops值在B列,需要在表1新增列输出结果:
- 通用版本(全版本Excel兼容,百分比差值规则为「(表1pops - 表2pops)/表2pops」,即相对表2数值的变动比例):
=IFERROR((B2-VLOOKUP(A2,Sheet2!A:B,2,FALSE))/VLOOKUP(A2,Sheet2!A:B,2,FALSE),"无匹配CMA_ID")
- 高版本Excel/365/Google Sheets简化版本(用XLOOKUP替代VLOOKUP,逻辑更易读):
=IFERROR((B2-XLOOKUP(A2,Sheet2!A:A,Sheet2!B:B))/XLOOKUP(A2,Sheet2!A:A,Sheet2!B:B),"无匹配CMA_ID")
公式输入后下拉填充整列,将结果列单元格格式设置为「百分比」即可直接展示百分比结果。如果业务规则要求以表1pops为分母计算差值,把公式里的分母替换为B2即可。
场景2:SQL查询数据库表
假设两张数据库表分别命名为table1、table2,两表均包含CMA_ID、pops字段,直接通过关联查询计算即可:
SELECT t1.CMA_ID, t1.pops AS pops_t1, t2.pops AS pops_t2, -- 计算结果保留2位百分比,可按需调整精度和分母规则 ROUND((t1.pops - t2.pops)/t2.pops * 100, 2) AS pops_diff_percent FROM table1 t1 INNER JOIN table2 t2 ON t1.CMA_ID = t2.CMA_ID;
如果需要保留表1中未匹配到表2的记录,将INNER JOIN替换为LEFT JOIN即可,无匹配记录的差值字段会返回NULL。
提示:如果业务要求计算两个pops值的相对平均偏差,把分母替换为
(t1.pops + t2.pops)/2即可适配规则。
内容的提问来源于stack exchange,提问作者seth
相关产品推荐
相关产品推荐

