如何在Google Sheets中使用QUERY函数统计分组后的唯一值数量
QUERY函数按分组统计去重值解决方案
问题背景
现有如下原始数据:
| Name | Age |
|---|---|
| Ann | adult |
| Ann | adult |
| Andrew | adult |
| Mike | adult |
| Ann | teenager |
| John | teenager |
| John | teenager |
需要按Age分组,统计每个分组下不重复的Name数量,预期结果如下:
| Age | count Name (distinct Names) |
|---|---|
| adult | 3 |
| teenager | 2 |
错误原因分析
- Google Sheets的QUERY函数使用的是简化版SQL语法,原生不支持
COUNT(UNIQUE(列名))这类嵌套聚合的写法,所以尝试的count(unique(A))会报错 - 之前测试的公式里
group by A存在逻辑错误,分组维度是Age,应该按B列分组而非A列
正确实现方案
核心思路是先对原始数据做整体去重,再用QUERY做分组统计:先通过UNIQUE函数去掉所有「Name+Age完全重复」的行,此时剩下的每一行都对应一个唯一的Name+Age组合,再按Age分组统计行数即可得到每个分组下的唯一Name数量。
可用公式
=QUERY(UNIQUE(table), "select Col2, count(Col1) group by Col2 label count(Col1) 'count Name (distinct Names)'", 1)
公式说明
UNIQUE(table):返回原始数据去重后的结果,上述原始数据去重后会得到5条有效记录:Ann/adult、Andrew/adult、Mike/adult、Ann/teenager、John/teenager- 对去重后的结果按Col2(即Age列)分组,统计Col1(即Name列)的数量,刚好对应每个Age下的唯一Name数
label count(Col1) 'count Name (distinct Names)'用来自定义输出的统计列列名,匹配预期输出要求- 如果你的Google Sheets区域设置使用逗号作为函数参数分隔符,将公式中的分号替换为逗号即可
内容的提问来源于stack exchange,提问作者Andrew Anderson
相关产品推荐
相关产品推荐

