Google Sheets QUERY 的聚合函数共有五个:sum()、avg()、count()、max() 和 min()。这就是完整列表。没有窗口函数,没有 countd(),也没有中位数——仅此五个。如果你期待接近完整 SQL 的聚合工具集,很快就会碰壁。但这五个函数已能覆盖财务模型中交叉汇总需求的 80%。
QUERY 遵循 Google Visualization API 查询语言规范,Google 官方文档将其描述为"受限版 SQL"。截至 2026 年 4 月,可用的聚合函数自发布以来从未扩展——列表稳定且精简。
五个聚合函数一览
| 函数 | 语法 | 功能 | 财务场景 |
|---|---|---|---|
sum() | sum(Col) | 对数值列求和 | 按区域汇总营收、人力成本 |
avg() | avg(Col) | 对数值列求平均值 | 平均合同金额、综合费率 |
count() | count(Col) | 统计非空行数 | 交易笔数、合同数量 |
max() | max(Col) | 取列中最大值 | 支出峰值、最高 ARR 客户 |
min() | min(Col) | 取列中最小值 | 底价、最低毛利率 |
只要涉及分组,五个函数都必须配合 GROUP BY 子句使用——QUERY 不会自动推断分组逻辑。与标准 SQL 不同,若查询中混用了聚合列与非聚合列,必须将所有非聚合列显式列入 GROUP BY,否则将报错。
SUM 与 GROUP BY:按部门汇总营收
这是最常用的组合。以下示例从交易台账中提取利润表数据:
=QUERY('交易明细'!A:E,
"SELECT C, sum(D)
WHERE B >= date '"&TEXT(假设参数!$B$3,"yyyy-mm-dd")&"'
AND B <= date '"&TEXT(假设参数!$C$3,"yyyy-mm-dd")&"'
GROUP BY C
LABEL sum(D) '营收'",1)
C 列为部门,D 列为金额。日期区间从 假设参数!$B$3:$C$3 中读取,统一在一处控制统计口径。修改参数表中的日期,所有下游 QUERY 公式即自动刷新。
在一份包含 5 万行台账数据的工作簿中,用这套结构向董事会汇报 Q1 共 4200 万元营收、拆分至 6 个成本中心,运行时间不超过 2 秒——比需要手动刷新的数据透视表更快。
AVG:综合费率与合同均值
=QUERY('商机跟踪'!A:F,
"SELECT D, avg(E), count(A)
WHERE F = '已签约'
AND C >= date '"&TEXT(TODAY()-90,"yyyy-mm-dd")&"'
GROUP BY D
LABEL avg(E) '平均合同金额', count(A) '合同数量'",1)
D 列为销售负责人,E 列为年度合同额(ACV),F 列为商机阶段。一个公式同时输出每位销售的平均合同金额(在我们的模型中为 18.6 万元)和合同数量,无需辅助列。
avg() 无法处理的情况:加权平均。如果需要按营收加权的综合费率,计算逻辑为 sum(营收 × 费率) / sum(营收),QUERY 无法直接表达,需改用 SUMPRODUCT 实现。
COUNT:统计交易量
=QUERY('总账'!A:G,
"SELECT E, count(A)
WHERE D = '运营费用'
GROUP BY E
ORDER BY count(A) DESC
LABEL count(A) '交易笔数'",1)
count() 统计指定列中的非空值数量。若需要去重计数(如唯一供应商数、唯一科目数),QUERY 原生不支持。常用替代方案是在输出结果上套用 COUNTUNIQUE,或在源数据上使用 SUMPRODUCT 配合 COUNTIF 数组公式。
这是聚合函数集中最显著的局限。如果有 countd() 函数,可以省去财务模型中大量杂乱的辅助列。
MAX 与 MIN:边界值分析
两者用法简单,但在差异分析中很有价值:
=QUERY('月度实际'!A:D,
"SELECT B, min(C), max(C), avg(C)
WHERE A >= date '2025-01-01'
GROUP BY B
LABEL min(C) '最低值', max(C) '最高值', avg(C) '平均值'",1)
这个公式返回每个科目的月度波动区间——可快速发现某个成本中心月度支出在 28 万元到 41 万元之间大幅波动,而该科目理论上应保持稳定。在同一个查询中同时使用 max() 和 min(),无需编写两条独立公式即可获得波动幅度。
在一个 QUERY 中组合多个聚合函数
QUERY 支持在单条 SELECT 中叠加多个聚合函数,这正是在财务模型中选用它而非数据透视表的核心原因:
=QUERY('营收明细'!A:F,
"SELECT B, C,
sum(D) as 总营收,
avg(D) as 平均合同额,
count(A) as 合同数量,
max(D) as 最大单笔
WHERE E = '大客户'
GROUP BY B, C
ORDER BY sum(D) DESC",1)
B 列为季度,C 列为区域,D 列为 ACV。一个公式输出完整的区域拆分:总营收 3100 万元、平均合同额 21.7 万元、14 笔合同、最大单笔 89 万元——按季度和区域分组,按营收降序排列。若改用数据透视表,则需要 4 张独立的透视表,且每次都需手动刷新。
PIVOT:聚合加交叉制表
QUERY 的 PIVOT 子句将聚合函数与列转置结合,适用于银团贷款模型中需要按交易对手和季度展示敞口的场景:
=QUERY('敞口明细'!A:E,
"SELECT B, sum(D)
WHERE C = '已提款'
GROUP BY B
PIVOT A
LABEL sum(D) ''",1)
A 列为季度(Q1–Q4),B 列为交易对手,D 列为敞口金额。PIVOT 会自动将季度转置为列标题。注意:列标题是动态生成的,若透视结构发生变化,任何引用特定列的下游公式都会失效。用于输出至董事会汇报材料的静态报表,这套方案完全可行;若是带有下游依赖关系的动态模型,建议改用静态 SUMIFS。
QUERY 的局限
明确列出这些缺口很有必要,因为它们直接影响模型的架构设计:
不支持 countd()(去重计数)。 可用 =SUMPRODUCT(1/COUNTIF(区域,区域)) 或辅助列替代。
不支持 median()(中位数)。 可用数组公式 =MEDIAN(IF(...)) 替代。
不支持 stdev() 或 var()(统计量)。 标准差和方差不在规范范围内。可先用 QUERY 提取数据,再在外层套用 STDEV() 计算。
不支持窗口函数。 累计求和、排名、环比偏移均不可用。需借助辅助列,或在新版 Google Sheets 中使用 SCAN/LAMBDA 实现。
不支持条件聚合。 SQL 中的 SUM(CASE WHEN...) 模式无法在 QUERY 中实现。可改用跨表 SUMIFS:=SUMIFS('利润表'!D:D,'利润表'!C:C,"运营费用",'利润表'!B:B,">="&假设参数!$B$3)。
LABEL 与 FORMAT 的使用说明
两个子句均可作用于聚合列。LABEL sum(D) '营收' 用于重命名输出列标题——当默认的 sum D 标题导致下游 VLOOKUP 引用失效时,这一点至关重要。FORMAT sum(D) '$#,##0' 可在查询输出中直接应用数字格式,但这会将该列转换为文本类型,导致任何对该列进行计算的公式失效。FORMAT 仅适用于纯展示性输出;若结果还需参与后续计算,请跳过 FORMAT,改为单独设置单元格格式。
截至 2026 年 4 月,Google Sheets 官方文档说明:"LABEL 子句用于设置一个或多个列的标签。"该子句接受字符串字面量,且必须位于查询字符串中 GROUP BY、PIVOT、ORDER BY 和 LIMIT 之后。
常见问题
Google Sheets QUERY 函数支持哪些聚合函数?
截至 2026 年 4 月,Google Sheets QUERY 共支持五个聚合函数:sum()(求和)、avg()(平均值)、count()(非空行计数)、max()(最大值)、min()(最小值)。这是完整列表,自 QUERY 函数上线以来从未扩展。所有聚合函数在涉及分组时均需配合 GROUP BY 子句使用。
QUERY 能否实现去重计数(distinct count)?
不能。QUERY 不支持 countd() 或任何形式的去重计数。常用替代方案有两种:一是在 QUERY 输出结果所在列上套用 COUNTUNIQUE() 函数;二是在源数据上使用数组公式 =SUMPRODUCT(1/COUNTIF(区域,区域)) 直接计算唯一值数量。如果需要统计唯一供应商数或唯一科目数,后者更为灵活。
多个聚合函数能在同一条 QUERY 中同时使用吗?
可以。QUERY 支持在单条 SELECT 语句中并列使用多个聚合函数,只需以逗号分隔即可。例如:
=QUERY(数据!A:D,
"SELECT B, sum(C), avg(C), count(A), max(C)
GROUP BY B",1)
该公式一次性返回按 B 列分组的总计、均值、行数和最大值,无需编写多条独立公式,也无需依赖数据透视表。
如果你需要跨表处理大规模数据集,并希望使用更完整的 SQL 工具集——包括 JOIN、窗口函数和 countd()——可参阅 DuckDB 与 Google Sheets 集成方案,了解实际落地效果。
查看 ModelMonkey 方案——同时支持 Google Sheets 与 Excel。