您好,感谢您的帮助。我是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 个值要困难得多。我在上一个问题中尝试过,但它需要一个冗长而笨拙的公式。