您好,感谢您的帮助。我是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列中所有匹配项的AVG,前5个最大值和前5分钟。
我发现我无法将查询指向引用实例ID的单元格。有办法吗? 我正在使用它来尝试获得最大值,并且它适用于1,但是我确定了前5名或任何数字。
=sort(query('HeC-Metrics'!A:B,"select max(B) Where A = 'i-044532f4693fc6186'"))
我可以为每个所需的结果AVG,最小,最大执行不同的查询。我还想引用G列中的单元格,因此不必手动输入InstanceID。
谢谢您的时间。 斯蒂芬
答案 0 :(得分:1)
因此,这只是获得正确的语法以在查询中使用单元格值作为匹配项的情况
=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))
这引起了一个问题,即是否可以得到这些结果(a)不需要一系列不同的值,以及(b)在单个数组公式中无需复制下来。
您当然可以直接从查询中获得不同的ID和平均值。从多个组中获取前n个值或后n个值要困难得多。我在previous question中尝试过,但是它需要冗长且笨拙的公式。