Google 工作表查询函数:如何对具有 non-constants 的列进行算术运算,即不除以常数而是除以另一个单元格?

Google sheets query functions: how to do arithmetic on columns with non-constants, i.e. dividing not by a constant but by another cell?

只要我使用的是固定常量,我就知道如何使用查询函数对列进行算术运算。但是,如果我尝试使用单元格引用而不是常量来执行相同操作,则会出现错误。

我试过将单元格设为命名范围并引用该名称,希望它能像常量一样运行,但我仍然遇到错误。必须有办法做到这一点。以下是有效的示例:

=QUERY(FebMarket,"SELECT (C/5)") //这会将 C 列除以 5

=QUERY(FebMarket,"SELECT AVG(C)") //这给出了 C 列的平均值

=QUERY(FebMarket,"SELECT AVG(C) LABEL AVG(C) ''") //没有header

的col C的平均值

但是,如果我执行以下任一操作,我会收到错误消息:

=QUERY(FebMarket,"SELECT C/(AVG(C) LABEL AVG(C) '')")

=QUERY(FebMarket,"SELECT C/(AVG(C))")

=QUERY(FebMarket,"SELECT C/AVG(C)")

=QUERY(FebMarket,"SELECT C/avgC") // 其中 'avgC' 是赋予单元格的命名范围,我在其中分别计算了 C 列的平均值

据我所知你在 SQL 的所有方言中得到相同的结果。您可以在单个查询中执行以下两项操作之一:

Get the result of an aggregate (like AVGE) over the entire dataset

例如

=QUERY(FebMarket,"SELECT AVG(C)") 

在这种情况下,您只能 select 在查询中聚合

Get an aggregate for each one of a set of groups defined by one or more grouping variables.

例如

=QUERY(FebMarket,"SELECT GroupVariable,AVG(C) group by groupVariable") 

在这种情况下,您可以 select 在查询中对变量和聚合进行分组。

这些都没有帮助。

如果您 google 类似 'SQL divide column by its average' 的东西,您可能会使用子查询得到答案,但在撰写本文时,这些在 Google 表格中不可用。

因此(尽管您可以通过其他方式缩短此时间)使用查询的解决方案必须是

=ArrayFormula(query(A:A,"select A where A is not null")/query(A:A,"select avg(A) label avg(A) ''"))
=QUERY(QUERY(C1:C,
 "select C / "&AVERAGE(C1:C), 0), 
 "select Col1 
  where Col1 is not null
  label Col1 '' ", 0)