如何统计A列数据相同且B列、C列数据不同的记录数?
统计A列相同且B、C列不同的记录方法
示例数据
| counties | A | B | C |
|---|---|---|---|
| city1 | 10 | 20 | 30 |
| city1 | 10 | 21 | 31 |
需求说明:统计A列值相同的分组中,存在至少两条记录B、C列不完全相同的分组数量(示例中city1的A分组符合条件,计数加1)。
Excel 解法
方法1:辅助列+数据透视表
- 新增辅助列D,输入公式
=A2&"|"&B2&"|"&C2,下拉填充,将A、B、C拼接成唯一标识。 - 插入数据透视表:把
A拖到「行」区域,D拖到「值」区域并设置汇总方式为「计数」。 - 新增辅助列E,输入公式
=IF(COUNTIF(A:A,A2)>1,1,0),对E列去重后求和,即可得到符合条件的分组数。
方法2:数组公式直接计算
在空白单元格输入以下公式,按Ctrl+Shift+Enter确认:
=SUM(IF(FREQUENCY(IF(COUNTIFS(A:A,A:A,B:B,B:B,C:C,C:C)<COUNTIF(A:A,A:A),MATCH(A:A,A:A,0)),ROW(A:A)-ROW(A1)+1)>0,1))
公式会直接返回符合条件的A分组总数。
SQL 解法
假设表名为your_table:
统计符合条件的分组数
SELECT COUNT(DISTINCT A) AS qualified_groups FROM your_table t1 WHERE EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.A = t1.A AND (t2.B != t1.B OR t2.C != t1.C) );
统计每个分组的B/C不同组合数
SELECT A, COUNT(DISTINCT CONCAT(B, '|', C)) AS distinct_bc_count FROM your_table GROUP BY A HAVING distinct_bc_count > 1;
内容的提问来源于stack exchange,提问作者Winna
相关产品推荐
相关产品推荐

