Google Sheets Query语句计算商品平均售价的语法问题求助
解决Google Sheets Query计算加权平均的语法问题
问题背景
我有一个20列的大型表格,其中3个核心列是销售人员销售数据:Name(姓名,对应Col1)、Qty(数量,对应Col2)、Average sale price(平均售价,对应Col3)。用标准公式=Sumproduct(C4:C8, D4:D8)/Sum(C4:C8)能算出商品加权平均售价为$13.52,但在D16单元格用Query语句Query(B4:D8, "Select Sum(Col2*Col3)/Sum(Col2)")时出现解析错误。需要仅用Query语句解决,不能用SUMIF或Filter,也不想用辅助列。
正确Query语法
Google Sheets的Query语言不支持在SELECT子句里直接对聚合结果做算术运算(比如Sum(a)/Sum(b)这种写法),但可以通过嵌套Query实现:
嵌套Query写法
=QUERY(QUERY(B4:D8, "SELECT SUM(Col2*Col3), SUM(Col2)"), "SELECT Col1/Col2 LABEL Col1/Col2 ''")
- 内层Query:先计算出
SUM(Col2*Col3)(数量×售价的总和,即分子)和SUM(Col2)(数量总和,即分母),得到一行两列的结果 - 外层Query:对这两个结果做除法,并用
LABEL ... ''去掉Query默认生成的表头,直接显示计算数值
是否需要辅助列?
不需要辅助列,上述嵌套Query写法直接完成加权平均计算,无需额外添加列存储中间结果。
内容的提问来源于stack exchange,提问作者Badr VA
相关产品推荐
相关产品推荐

