谷歌查询语言,用于在查询中使用单元格引用的结果总和



您好,感谢您的帮助。我是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 匹配的所有行,并返回 B 列、前 5 个最大值和前 5 个分钟中所有匹配项的 AVG。

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

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

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

谢谢你的时间。 斯蒂芬

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

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

请注意,如果您已经有一个要比较的不同 ID 列表,则您并不真正需要分组,但如果没有它,您就无法拥有像 avg 这样的聚合。

要获得底部 5,您可以使用 filter & sortn

=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))

这就引出了一个问题,即您是否可以在不需要非重复值列表的情况下获得这些结果,以及 (b( 在单个数组公式中无需复制即可获得这些结果。

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

最新更新