Google sheets 在Google查询(SQL)中,如何将单个数据与聚合组进行比较?

Google sheets 在Google查询(SQL)中,如何将单个数据与聚合组进行比较?,google-sheets,google-sheets-formula,array-formulas,google-sheets-query,google-query-language,Google Sheets,Google Sheets Formula,Array Formulas,Google Sheets Query,Google Query Language,我有一个这样的表格,当前表格为蓝色,所需结果以黄色突出显示: 我的目标是使用Google Sheets内置的=query()函数(注意:基于Google自己的查询语言,非常类似于SQL),在Google Sheets中建立一个查询,基本上可以完成整个表,而无需添加额外的公式。我知道如何分别找到月平均值,风格如下 SELECT month(DateRun), average(metric) GROUP BY month(DateRun) 但你怎么会有这样的感觉 SELECT AdID, Dat

我有一个这样的表格,当前表格为蓝色,所需结果以黄色突出显示:

我的目标是使用Google Sheets内置的
=query()
函数(注意:基于Google自己的查询语言,非常类似于SQL),在Google Sheets中建立一个查询,基本上可以完成整个表,而无需添加额外的公式。我知道如何分别找到月平均值,风格如下

SELECT month(DateRun), average(metric) GROUP BY month(DateRun)
但你怎么会有这样的感觉

SELECT AdID, DateRun, Metric, average(Metric for Associated Month), IndividualMetric - AverageForMonth 
我试着自己找到它,但没有找到一个资源,我可以转换为我自己的使用

不久前我学会了子查询,我有一种感觉,也许答案是这样的,但我很迷茫


如果我能提供任何其他信息,请告诉我。

您似乎在寻找窗口平均值:

select 
    AdID, 
    DateRun, 
    Metric, 
    avg(Metric) over(
        partition by Metric, date_trunc(DateRun, month)
    ) month_avg_metric,
    Metric - avg(Metric) over(
        partition by Metric, date_trunc(DateRun, month)
    ) diff_with_month_avg_metric
from mytable 

结果集中的最后一列给出了当前月份度量的平均值,最后一列计算当前度量与其月度平均值之间的差值。

您似乎在寻找窗口平均值:

select 
    AdID, 
    DateRun, 
    Metric, 
    avg(Metric) over(
        partition by Metric, date_trunc(DateRun, month)
    ) month_avg_metric,
    Metric - avg(Metric) over(
        partition by Metric, date_trunc(DateRun, month)
    ) diff_with_month_avg_metric
from mytable 
结果集中的最后一列给出了当前月份度量的平均值,最后一列计算当前度量与其月度平均值之间的差值。

尝试:

=ARRAYFORMULA(IFNA(VLOOKUP(MONTH(B2:B), 
 QUERY(B2:C, "select month(B)+1,avg(C) group by month(B)"), 2, 0)))

以及:


更新: 试试:

=ARRAYFORMULA(IFNA(VLOOKUP(MONTH(B2:B), 
 QUERY(B2:C, "select month(B)+1,avg(C) group by month(B)"), 2, 0)))

以及:


更新:

这很有帮助,但公式需要全部合并到左上角的单元格中,因此右侧的两个公式无法工作。不确定这是什么意思。你能分享一份你的工作表和期望输出的例子吗?比如D2或E2中不应该有公式。在A2中运行的查询应具有D/E结果,但只有在A2中运行的查询A2中的公式是什么?post ITCurrent just=QUERY(“数据范围”,“选择AdID、日期运行、度量”这是一个简化版,因为它涉及到其他WHERE标准。如果您愿意,我可以发布完整版,但可能会使事情复杂化这很有帮助,但公式需要全部合并到左上角的单元格中,因此右侧的两个公式无法工作。不确定这是什么意思。您能与exampl共享一份工作表副本吗所需输出的e?如D2或E2中不应有公式。A2中运行的查询应具有D/e结果,但只有A2中运行的查询A2中的公式是什么?post ITCurrent just=query(“数据范围”,“选择AdID、日期运行、度量”这是一个简化的版本,因为它涉及到其他WHERE条件。如果你愿意,我可以发布完整的版本,但它可能会使事情复杂化。这非常有用,但Google Query没有over()或“分区依据”函数/方法。这里列出了可用函数/方法的范围:这非常有用,但Google Query没有over()或“分区依据”函数/方法。这里列出了可用函数/方法的范围:您可以使用vlookup帮助您的查询,并将公式ini D2放入您实际拥有的查询列或表中?您可以使用vlookup帮助您的查询,并将公式ini D2放入您实际拥有的查询列或表中?