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)
只要我使用的是固定常量,我就知道如何使用查询函数对列进行算术运算。但是,如果我尝试使用单元格引用而不是常量来执行相同操作,则会出现错误。
我试过将单元格设为命名范围并引用该名称,希望它能像常量一样运行,但我仍然遇到错误。必须有办法做到这一点。以下是有效的示例:
=QUERY(FebMarket,"SELECT (C/5)")
//这会将 C 列除以 5
=QUERY(FebMarket,"SELECT AVG(C)")
//这给出了 C 列的平均值
=QUERY(FebMarket,"SELECT AVG(C) LABEL AVG(C) ''")
//没有header
但是,如果我执行以下任一操作,我会收到错误消息:
=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)