Google 在查询中使用单元格引用的结果总和的查询语言

Google Query Language for sum of result using cell reference in query

您好,感谢您的帮助。我是 GQL 的新手,但有很好的 SQL 经验,我认为我可能遗漏了一些小东西。 我有 2 张工作表

Main sheet

Colum G
InstanceID
i-554532f4693fc6186
i-09554fcda5f2f3262
i-0047551ae514412d5

-

Data Sheet

Colum A                 Colum B
i-554532f4693fc6186      10.12
i-554532f4693fc6186      12.12
i-554532f4693fc6186      13.12
i-554532f4693fc6186      17.12
i-554532f4693fc6186      30.12

我正在尝试编写一个查询,该查询将查找与数据表 A 列中 G 列中的实例 ID 匹配的所有行和 return B 列中所有匹配项的 AVG,前 5 个最大和前 5 分钟。

我发现我无法将查询指向引用实例 ID 的单元格。有办法吗? 我正在使用它来尝试获得最大值,它适用于 1,但我获得了前 5 名或任何数字。

=sort(query('HeC-Metrics'!A:B,"select max(B) Where A = 'i-044532f4693fc6186'"))

我可以接受对每个所需结果(AVG、最小值、最大值)执行不同的查询。我还想引用 G 列中的单元格,这样我就不必手动输入 InstanceID。

谢谢你的时间。 斯蒂芬

所以这只是获得正确语法以在查询中使用单元格值作为匹配项的情况

=query(Sheet2!A:B,"select avg(B) where A='"&G2&"' group by A label avg(B)  ''",1)

请注意,如果您已经有了要比较的不同 ID 列表,那么您实际上并不需要分组依据,但如果没有它,您就无法拥有像 avg 这样的聚合。

要获得后 5 个,您可以使用过滤器和排序

=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5))

(我已将结果转置成一行(第 2 行)而不是一列)

或者您可以使用查询

=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B  limit 5 label B '' ",1))

同样,要获得前 5 名,您可以使用

=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5,,1,false))

=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B desc limit 5 label B '' ",1))

这引出了一个问题,即您是否可以 (a) 不需要不同值列表和 (b) 在单个数组公式中而不向下复制来获得这些结果。

您当然可以直接从查询中获得不同的 ID 和平均值。从多个组中获取前 n 个值或后 n 个值要困难得多。我在 中尝试过,但它需要一个冗长而笨拙的公式。